java tcp data transmission network programming

concept

The tcp protocol transmits data relatively stably. Before starting to transmit data, the client will have the server perform a three-way handshake. The client sends a data packet to the server, the server replies to the client, and the client replies to the server. This ensures that the server can receive data before starting to transmit data. The udp protocol is that the sender directly transmits data to the receiver, there is no server, and the sender just sends, regardless of whether the receiver can receive it.

tcp instance

client

package com.test.tcpTest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient {
    
    

	/**
	 * @param args
	 */
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub

		//tcp客户端
		
		//1.创建客户端  指定服务器端的ip和端口号
		try {
    
    
			Socket socket=new Socket("192.168.8.4", 8899);
			
			//返回客户端的字节输出流对象
			OutputStream os= socket.getOutputStream();
			
			//2.发送数据到服务器端
			os.write("tcp你好".getBytes());
			
			
			//也可以接收服务端的反馈信息
			InputStream is= socket.getInputStream();
			
			byte[] data=new byte[1024];
			
			is.read(data);
			
			System.out.println("得到服务器反馈回来的消息:"+new String(data));
			
			//3.关闭客户端
			socket.close();
			
		} catch (UnknownHostException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}

Server

package com.test.tcpTest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
    
    

	/**
	 * @param args
	 */
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub

		//服务器端
		 try {
    
    
			 //1.创建服务器端socket
			ServerSocket serverSocket=new ServerSocket(8899);
			
			//2.接收客户端
			 Socket socket=  serverSocket.accept();
			 
			 //3.拿到客户端的消息
			 InputStream is= socket.getInputStream();
			 
			 byte[] data=new byte[1024];
			 
			 is.read(data);
			 
			 System.out.println("来自客户端的消息:"+new String(data));
			 
			 //4.给客户端发送反馈信息
			 OutputStream os= socket.getOutputStream();
			 os.write("你好,收到你的消息了".getBytes());
			 
			 //4.关闭客户端 
			 socket.close();
			 
			 //5.关闭服务器端
			 //serverSocket.close();
			
			
		} catch (IOException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
		
		
	}

}

insert image description here
insert image description here

Guess you like

Origin blog.csdn.net/Rockandrollman/article/details/130495884