
PrintWriter.println()的一些问题,java server/client程序。
客户端:importjava.net.*;importjava.io.*;publicclassASCIIClient{publicstaticvoidmain(Stri...
客户端:
import java.net.*;
import java.io.*;
public class ASCIIClient {
public static void main(String[] args)throws IOException {
InetAddress addr=InetAddress.getByName("localhost");
System.out.println("addr= "+addr);
Socket socket=new Socket(addr,ASCIIServer.PORT);
System.out.println(ASCIIServer.PORT);
try{
System.out.println("socket= "+socket);
//socket= Socket[addr=localhost/127.0.0.1,port=8080,localport=49657]
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
PrintWriter out=new PrintWriter(
new BufferedWriter (new OutputStreamWriter(socket.getOutputStream())),true
);
for (int i=1;i<=10;i++){
out.println(String.valueOf(i));//out.println(i);////
String str=in.readLine();
System.out.println(str);
}
out.println("-1");
}finally{
System.out.println("Closing...........");
socket.close();
}
}
}
服务器端:
import java.io.*;
import java.net.*;
public class ASCIIServer {
public static final int PORT = 8080;
public static void main(String [] args)throws IOException{
ServerSocket s=new ServerSocket (PORT);
System.out.println("Started: "+s);
try{
Socket socket=s.accept();//create a communication socket
try{
System.out.println("Connection accepted: "+ socket);
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
PrintWriter out=new PrintWriter(
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true
);
while (true){
String str=in.readLine();
if(str.equals("-1")) break;
int n=Integer.parseInt(str);
//System.out.println("Echoing "+str);
out.println(String.valueOf(n*n));//();
}
}finally{
System.out.println("Closing...........");
socket.close();
}
}finally{
s.close();
}
}
}
我的问题:请问out.println()这个函数,是否可以把参数自动变为String型的?比如参数为int整数2,可以自动变为字符串"2".
还有,为什么我运行了好几次,有时候打印的东西是正确的,有时候根本就不打印计算出的平方数(很快的显示一下就消失了)。
是我软件的问题吗?我用的eclipse
有时候运行会出现下面东西,是什么意思?
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:97)
at ASCIIServer.main(ASCIIServer.java:8) 展开
import java.net.*;
import java.io.*;
public class ASCIIClient {
public static void main(String[] args)throws IOException {
InetAddress addr=InetAddress.getByName("localhost");
System.out.println("addr= "+addr);
Socket socket=new Socket(addr,ASCIIServer.PORT);
System.out.println(ASCIIServer.PORT);
try{
System.out.println("socket= "+socket);
//socket= Socket[addr=localhost/127.0.0.1,port=8080,localport=49657]
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
PrintWriter out=new PrintWriter(
new BufferedWriter (new OutputStreamWriter(socket.getOutputStream())),true
);
for (int i=1;i<=10;i++){
out.println(String.valueOf(i));//out.println(i);////
String str=in.readLine();
System.out.println(str);
}
out.println("-1");
}finally{
System.out.println("Closing...........");
socket.close();
}
}
}
服务器端:
import java.io.*;
import java.net.*;
public class ASCIIServer {
public static final int PORT = 8080;
public static void main(String [] args)throws IOException{
ServerSocket s=new ServerSocket (PORT);
System.out.println("Started: "+s);
try{
Socket socket=s.accept();//create a communication socket
try{
System.out.println("Connection accepted: "+ socket);
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
PrintWriter out=new PrintWriter(
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true
);
while (true){
String str=in.readLine();
if(str.equals("-1")) break;
int n=Integer.parseInt(str);
//System.out.println("Echoing "+str);
out.println(String.valueOf(n*n));//();
}
}finally{
System.out.println("Closing...........");
socket.close();
}
}finally{
s.close();
}
}
}
我的问题:请问out.println()这个函数,是否可以把参数自动变为String型的?比如参数为int整数2,可以自动变为字符串"2".
还有,为什么我运行了好几次,有时候打印的东西是正确的,有时候根本就不打印计算出的平方数(很快的显示一下就消失了)。
是我软件的问题吗?我用的eclipse
有时候运行会出现下面东西,是什么意思?
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:97)
at ASCIIServer.main(ASCIIServer.java:8) 展开
展开全部
程序没有大问题,我试了,对于你出现的问题我想是
1:打印出来的东西一下消失了??它没消失,你运行了Server端和Client端两个程序,eclipse会出现两个输出控制台,你看见一下消失了,是因为控制台自动切换了,你要看输入结果请在切换输出控制台,位置在输出控制台右边一个像小显示器一样的东西.
2.出现.BindException 可能是你Server端还没停止, 端口8080还被占用着, 或者其它程序如Tomcat把8080端口占用了, 请把8080端口的程序停止了再运行...
1:打印出来的东西一下消失了??它没消失,你运行了Server端和Client端两个程序,eclipse会出现两个输出控制台,你看见一下消失了,是因为控制台自动切换了,你要看输入结果请在切换输出控制台,位置在输出控制台右边一个像小显示器一样的东西.
2.出现.BindException 可能是你Server端还没停止, 端口8080还被占用着, 或者其它程序如Tomcat把8080端口占用了, 请把8080端口的程序停止了再运行...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询