Java网络编程
TCP通信分析图解
1. 服务端启动,创建ServerSocket对象,等待连接。 Socket client = new Socket("127.0.0.1", 6666); ServerSocket server = new ServerSocket(6666);
2. 客户端启动,创建Socket对象,请求连接。
3. 服务端接收连接,调用accept方法,并返回一个Socket对象。
4. 客户端Socket对象,获取OutputStream,向服务端写出数据。
5. 服务端Scoket对象,获取InputStream,读取客户端发送的数据
6. 服务端Socket对象,获取OutputStream,向客户端回写数据。
7. 客户端Scoket对象,获取InputStream,解析回写数据。
8. 客户端释放资源,断开连接。
代码:
客户端:
1 public class ClientTest { 2 public static void main(String[] args) throws IOException { 3 // 1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号 4 Socket socket = new Socket("127.0.0.1",8080); 5 // 2.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象 6 OutputStream outputStream = socket.getOutputStream(); 7 // 3.使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据 8 outputStream.write("请服务器接收".getBytes()); 9 // 4.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象 10 InputStream inputStream = socket.getInputStream(); 11 // 5.使用网络字节输入流InputStream对象中的方法read,读取服务器回写的数据 12 byte[] bytes =new byte[1024]; 13 int len=0; 14 while ((len=inputStream.read(bytes))!=-1){ 15 System.out.println(new String(bytes,0,len)); 16 } 17 // 6.释放资源(Socket) 18 inputStream.close(); 19 outputStream.close(); 20 socket.close(); 21 } 22 }
服务端:
1 public class ServerTest { 2 public static void main(String[] args) throws IOException { 3 // 1.创建服务器ServerSocket对象和系统要指定的端口号 4 ServerSocket serverSocket = new ServerSocket(8080); 5 // 2.使用ServerSocket对象中的方法accept,获取到请求的客户端对象Socket 6 Socket accept = serverSocket.accept(); 7 // 3.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象 8 InputStream inputStream = accept.getInputStream(); 9 // 4.使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据 10 byte[] bytes =new byte[1024]; 11 int len=inputStream.read(bytes); 12 System.out.println(new String(bytes,0,len)); 13 // 5.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象 14 OutputStream outputStream = accept.getOutputStream(); 15 // 6.使用网络字节输出流OutputStream对象中的方法write,给客户端回写数据 16 outputStream.write("获得客户端信息".getBytes()); 17 // 7.释放资源(Socket,ServerSocket) 18 outputStream.close(); 19 inputStream.close(); 20 accept.close(); 21 serverSocket.close(); 22 } 23 }