Socket之TCP和UDP协议通信

简介: 版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/69415435 一、定义简介:    1. TCP是一个面向连接的、可靠的协议(transmission control protocol)            专门设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/69415435

一、定义简介:

    1. TCP是一个面向连接的、可靠的协议(transmission control protocol)

            专门设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议。它是一种面向连接的协议。TCP连接是字节流而非报文流。


    2. UDP是一个无连接,不可靠的协议(user datagram protocol )
            数据的发送方只负责将数据发送出去,数据的接受方只负责接受数据。发送方和接收方不会相互确认数据的传输是否成功。


    3. Socket编程:Socket客户/服务器程序开发

            所谓的客户/服务器,是一种在基于网络环境的分布处理过程中,使用基于连接的网络通信模型。该通信模型首先在客户机和服务器之间定义一套通信协议,并创建一Socket(套接字)类,利用这个类建立一条可靠的链接;然后,客户/服务器再在这条连接上可靠地传输数据。客户端发出请求,服务器监听来自客户机地请求,并为客户端        提供响应服务。这就是典型的“请求-应答”模式。


二、简单通信实践:直接上代码,可直接运行

    1. TCP通信,需要创建两个类,一个是客户端(Client),一个是服务器端(Server)

    (1)Client类:

public class Client {	
	public static void main (String [] args){
		//创建客户端对象
		System.out.println("客户端启动~");
		try {
			Socket socket=new Socket("127.0.0.1",23456);
			OutputStream out=socket.getOutputStream();	
			PrintWriter pw=new PrintWriter(out);
			System.out.println("客户端:");//客户端写入
			Scanner sc=new Scanner(System.in);
			pw.println(sc.nextLine());
			pw.flush();
			
			InputStream in=socket.getInputStream();//客户端接收
			InputStreamReader inr=new InputStreamReader(in);
			BufferedReader bf=new BufferedReader(inr);//字符读取
			String s=bf.readLine();
			System.out.println(s);

			socket.close();
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}
AI 代码解读
    

    (2)Server类:

public class Server {
	public static void main(String [] args) throws IOException{
		//创建服务端接收
		System.out.println("服务端启动~");
		ServerSocket server=new ServerSocket(23456);
		Socket socket=server.accept();//接收客户端
		
		InputStream in=socket.getInputStream();//接收字节流数据
		InputStreamReader inr=new InputStreamReader(in);
		BufferedReader bf=new BufferedReader(inr);//字符流读取
		String s=bf.readLine();
		System.out.println(s);
    
	    OutputStream out=socket.getOutputStream();	
		PrintWriter pw=new PrintWriter(out);
		System.out.println("客户端:");//客户端写入
		Scanner sc=new Scanner(System.in);
		pw.println(sc.nextLine());//注意使用换行方法
		pw.flush();//可以释放资源也可以不释放资源,最后再关闭流

		server.close();
		socket.close();

	}

}
AI 代码解读

    2. UDP通信,也需要创建两个类,一个是客户端(UDP_Client),一个是服务端(UDP_Server)

    (1)UDP_Client类:

public class UDP_Client {
		public static void main(String [] args) throws SocketException, UnknownHostException{
			System.out.println("客户端启动~~");
			DatagramSocket socket=new DatagramSocket();//创建socket通道
			System.out.println("请输入发送信息:");
			Scanner sc=new Scanner(System.in);
			String s=sc.next();
			byte[]by=s.getBytes();
			
			DatagramPacket packet=new DatagramPacket(by, 0,by.length, //创建packet包
					InetAddress.getByName("127.0.0.1"), 10087);
			
			try {
				socket.send(packet);
			} catch (IOException e) {
				e.printStackTrace();
			}
			socket.close();
	}
}
AI 代码解读
    

    (2)UDP_Server类:

public class UDP_Server {
	public static void main(String [] args) throws SocketException{
		DatagramSocket socket = new DatagramSocket(10087);
		System.out.println("服务端启动~~");
		byte[]by=new byte[socket.getReceiveBufferSize()];//获取缓冲区长度
		DatagramPacket packet = new DatagramPacket(by, by.length);//创建数据包对象
		try {
			socket.receive(packet);
			String message=new String(by,0,by.length);
			System.out.println(message);
						
		} catch (IOException e) {
			e.printStackTrace();
		}
		socket.close();
	}

}
AI 代码解读

三、注意事项:

    1.TCP通信和UDP通信都是先启动服务端,然后再启动客户端,然后才可以进行通信;

    2. 以上的TCP通信和UDP通信分别属于不同的代码块,可按需复制需要的代码块;





尘光掠影
+关注
目录
打赏
0
0
0
0
3
分享
相关文章
WebSocket、Socket、TCP 和 HTTP 的差别与应用场景
WebSocket、Socket、TCP 和 HTTP 是网络通信中的四大“使者”,各具特色:HTTP 适合短时请求,TCP 稳定可靠,Socket 灵活定制,WebSocket 实现实时双向通信。本文用通俗语言解析它们的区别与应用场景,助你为项目选择最合适的通信方式。
621 3
|
4月前
|
TCP/IP与OPC协议的深度比较
总的来说,TCP/IP和OPC协议各有其优点和应用场景。TCP/IP协议是网络通信的基础,而OPC协议则是工业自动化领域的重要工具。在实际应用中,我们需要根据具体的需求和场景,选择合适的协议。
125 11
Socket如何实现客户端和服务器间的通信
通过上述示例,展示了如何使用Python的Socket模块实现基本的客户端和服务器间的通信。Socket提供了一种简单且强大的方式来建立和管理网络连接,适用于各种网络编程应用。理解和掌握Socket编程,可以帮助开发者构建高效、稳定的网络应用程序。
211 10
# 2个类轻松构建高效Socket通信库
本文介绍了一种通过两个类`EpollEventHandler`和`IEpollEvent`构建高效Socket通信库的方法。该库支持TCP、UDP和Unix域套接字,采用I/O多路复用技术(如epoll),提升并发处理能力。通过抽象基类和具体事件类的设计,简化了API使用,便于开发者快速上手。文章还提供了服务端与客户端的实例代码,展示其在实际项目中的应用效果。此Socket库适应嵌入式环境,功能定制性强,有助于减少外部依赖并提升维护效率。
133 76
# 2个类轻松构建高效Socket通信库
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
600 3
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
165 13
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
604 3
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
185 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问