TCP连接建立的步骤
一、客户端向服务器端发送连接请求后,就被动地等待服务器的响应。典型的TCP客户端要经过下面三步操作:
1、创建一个Socket实例:构造函数向指定的远程主机和端口建立一个TCP连接;
2.通过套接字的I/O流与服务端通信;
3、使用Socket类的close方法关闭连接。
public class MyClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1",9999);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader receiveServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
while(true) {
String msg = reader.readLine();
out.println(msg);
out.flush();
if ("end".equals(msg)) {
break;
}
System.out.println(receiveServer.readLine());
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二、服务端的工作是建立一个通信终端,并被动地等待客户端的连接。典型的TCP服务端执行如下两步操作:
1、创建一个ServerSocket实例并指定本地端口,用来监听客户端在该端口发送的TCP连接请求;
2、重复执行:
1)调用ServerSocket的accept()方法以获取客户端连接,并通过其返回值创建一个Socket实例;
2)为返回的Socket实例开启新的线程,并使用返回的Socket实例的I/O流与客户端通信;
3)通信完成后,使用Socket类的close()方法关闭该客户端的套接字连接。
public class MyServer {
public static void main(String[] args) {
try {
/*制定端口实例化一个ServerSocket*/
ServerSocket server = new ServerSocket(9999);
/*调用accept()方法,以在等待连接期间造成阻塞*/
Socket client = server.accept();
System.out.println("客户端已连接");
/*获取Socket的流以进行读写操作*/
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
while(true) {
String msg = in.readLine();
System.out.println(msg);
out.println("服务器收到信息:" + msg);
out.flush();
if ("end".equals(msg)) {
break;
}
}
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)