基于UDP实现简单的客户端服务端的消息传递
来源:互联网 发布:自制笛子开孔数据 编辑:程序博客网 时间:2024/06/05 04:24
前面的TCP是有可靠的,有序的。现在看看UDP,UDP是不可靠的,无序的。
现在看看实现:
这里我也用两个类模拟了客户端与服务端,
现在直接看下代码:
UDPServer.java:
package com.socket.udp;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;/** * UDP 服务端 * * @author lolli * */public class UDPServer {public static void main(String[] args) {try {// 创建服务器端的DatagramSocket,并指定端口DatagramSocket datagramSocket = new DatagramSocket(8888);System.out.println("***** 启动服务器,等待客户端的连接请求 ******");byte[] data = new byte[2048];// 创建数据报,用户接受客户端请求的数据DatagramPacket datagramPacket = new DatagramPacket(data, data.length);// 接收客户端请求的数据(在接收到数据之前一直处于阻塞状态)datagramSocket.receive(datagramPacket);// 获取请求的数据,并转成String打印出来String clientData = new String(data, 0, datagramPacket.getLength());System.out.println("我是服务端,客户端请求的数据为:" + clientData);// *** 给客户端进行相应 ***// 定义客户端的地址InetAddress inetAddress = datagramPacket.getAddress();int port = datagramPacket.getPort();byte[] backData = "我接受到了客户端的数据,你好!".getBytes();// 创建数据包,给客户端响应数据DatagramPacket backDatagramPacket = new DatagramPacket(backData, backData.length, inetAddress, port);// 给客户端发送数据datagramSocket.send(backDatagramPacket);} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
再看看客户端:
UDPClient.java:
package com.socket.udp;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;/** * UDP 客户端 * @author lolli * */public class UDPClient {public static void main(String[] args) {try {// 定义服务器地址InetAddress inetAddress = InetAddress.getByName("localhost");byte[] data = "我是客户端,hello".getBytes();// 创建数据报,准备数据DatagramPacket datagramPacket = new DatagramPacket(data, data.length, inetAddress, 8888);// 创建一个DatagramSocketDatagramSocket datagramSocket = new DatagramSocket();// 发送请求datagramSocket.send(datagramPacket);// *** 接收服务端响应回来的数据 ***byte[] resData = new byte[2048];// 创建数据报,用户接受客户端请求的数据DatagramPacket resDatagramPacket = new DatagramPacket(resData, resData.length);// 接收客户端请求的数据(在接收到数据之前一直处于阻塞状态)datagramSocket.receive(resDatagramPacket);// 获取请求的数据,并转成String打印出来String serverData = new String(resData, 0, resDatagramPacket.getLength());System.out.println("我是客户端,服务端响应的数据为:" + serverData);datagramSocket.close();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
然后再运行看看结果。
同样的,我们也要先启动客户端,在启动客户端
服务端控制台:
客户端控制台:
1 0
- 基于UDP实现简单的客户端服务端的消息传递
- 基于TCP实现简单的客户端服务端的消息传递
- 基于TCP实现简单的客户端服务端的消息传递(二)
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- 网络编程--python 实现简单的UDP客户端和服务端
- Java简单实现UDP服务端和客户端的通信
- 基于UDP的socket 客户端和服务端
- 基于Apache Mina实现的UDP服务端
- 基于Apache Mina实现的UDP服务端
- 基于Socket简单的客户端-服务端例子
- 基于TCP/UDP的NIO服务端/客户端代码实现damo(java)
- linux网络编程之用多线程实现客户端到服务端的通信(基于udp)
- socket编程基于UDP的服务端客户端回声程序
- 基于UDP的简单收发消息代码
- 一个简单的UDP服务端和客户端示例
- UDP 与 TCP的连接简单例子(服务端/客户端) VC
- 一个简单的UDP服务端和客户端示例
- Android上实现TCP&UDP的客户端和服务端
- 有时候你也只差那一点点
- java.net.BindException: Address already in use: JVM_Bind
- Java对流的使用(三)
- C++ unique函数
- MD5
- 基于UDP实现简单的客户端服务端的消息传递
- 结构体在函数传值时的一点笔记
- 电子名词解释
- JavaScript:History对象
- Android分区
- swift中打印一连串的变量,常量
- win8中让cmd.exe始终以管理员身份运行(适用win10)
- Unity集成Leap Motion
- oracle 11g 密码过期问题