用socket做了一个联网测试,一个服务器类,一个客户端类。当两个类连接成功之后,
服务器类会打印客户端类中的“hello”;而客户端也会打印服务器端的“echo:hello”。
当我程序运行的时候,前几次都没有出现预期效果;停止再重复运行几次之后,效果又
出来了。求各位大神解释解释(运行顺序没有错,先服务器类,后客户端类,Ip,端口都对应)。
-
服务器daunting代码
*/
public class EchoServerDemo {public static void main(String[]args){
try {
ServerSocket ss = new ServerSocket(6000);
System.out.println("服务器已启动,正在连接...");
Socket socket = ss.accept(); //等待客户端连接,该方法会阻塞;
InputStream input = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(input));
String info = br.readLine();
System.out.println(info);
System.out.println(info);
OutputStream output = socket.getOutputStream();
PrintStream ps = new PrintStream(output);
ps.println("echo:"+info);
output.close();
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//客户端类
public class EchoClientDemo {
public static void main(String[]args) {
//连接服务器
try {
Socket socket = new Socket("localhost",6000); //(IP,端口);localhost:表示本机ip
System.out.println("连接成功!");
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();
PrintStream ps = new PrintStream(out);
ps.println("hello");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String info = br.readLine();
System.out.println(info);
out.close();
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}