通过Socket实现UDP(用户数据报)编程
来源:互联网 发布:js中的length 编辑:程序博客网 时间:2024/05/22 13:41
- 服务器端
(1)步骤
①创建DatagramSocket,指定端口号
②创建DatagramPacket
③接收客户端发送的数据信息
④读取数据
try { /** * 服务器接收客户端数据 */ //1.创建服务器端DatagramSocket,指定端口 DatagramSocket socket=new DatagramSocket(1028); //2.创建数据报,用于接收客户端发送的数据 byte[] data=new byte[1024];//创建字节数组,指定接收的数据包的大小 DatagramPacket packet=new DatagramPacket(data, data.length); System.out.println("***服务器端已启动,等待客户端***"); //3.接收客户端发送的数据 socket.receive(packet);//此方法在接收到数据报之前会一直阻塞 //4.读取数据 String info=new String(data); System.out.println("我是服务器,客户端说:"+info); /** * 服务器对客户端数据进行响应 */ //1.定义客户端的IP,端口号,数据 InetAddress address = packet.getAddress(); int port=packet.getPort(); byte[] data2="欢迎您".getBytes(); //2.创建数据报,包含响应的数据信息 DatagramPacket packet2=new DatagramPacket(data2, 0,data2.length, address, port); //3.响应客户端 socket.send(packet2); //4.关闭资源 socket.close();} catch (SocketException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}
2.客户端
(1)步骤
①定义发送信息
②创建DatagramPacket,包含将要发送的信息
③创建DatagramSocket
④发送数据
try { /** * 客户端向服务器发送数据 */ //1.定义服务器的地址,端口号,数据 InetAddress address = InetAddress.getByName("localhost"); int port=1028; //2.创建数据报,包含要发送的数据信息 String info="用户名:admin,密码:123456"; byte[] bytes=info.getBytes(); DatagramPacket packet=new DatagramPacket(bytes, 0, bytes.length, address, port); //3.创建DatagramSocket对象 DatagramSocket socket=new DatagramSocket(); //4.向服务器端发送数据报 socket.send(packet); /** * 客户端接收服务器响应的数据 */ //1.创建数据报,用于接收服务器端响应的数据 byte[] data2=new byte[1024]; DatagramPacket packet2=new DatagramPacket(data2, data2.length); //2.接收服务器响应的数据 socket.receive(packet2); //3.读取数据 System.out.println("我是客户端,服务器说:"+new String(data2)); //4.关闭资源 socket.close();} catch (UnknownHostException e) { e.printStackTrace();} catch (SocketException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}
3.多客户端
①服务器端
void UDPServer(){ try { /** * 服务器接收客户端数据 */ //1.创建服务器端DatagramSocket,指定端口 DatagramSocket socket=new DatagramSocket(1028); System.out.println("***服务器端已启动,等待客户端***"); while(true){ //2.创建数据包,用于接收客户端发送的数据 byte[] data=new byte[1024];//创建字节数组,指定接收的数据包的大小 DatagramPacket packet=new DatagramPacket(data, data.length); //3.接收客户端发送的数据 socket.receive(packet); UDPServerThread serverThread=new UDPServerThread(socket,packet); serverThread.start(); } }catch (Exception e) { e.printStackTrace(); }}
②客户端
void UDPClient(){ try { /** * 客户端向服务器发送数据 */ //1.定义服务器的地址,端口号,数据 InetAddress address = InetAddress.getByName("localhost"); int port=1028; //2.创建数据报,包含要发送的数据信息 String info="用户名:admin,密码:123456"; byte[] bytes=info.getBytes(); DatagramPacket packet=new DatagramPacket(bytes, 0, bytes.length, address, port); //3.创建DatagramSocket对象 DatagramSocket socket=new DatagramSocket(); //4.向服务器端发送数据报 socket.send(packet); /** * 客户端接收服务器响应的数据 */ //1.创建数据报,用于接收服务器端响应的数据 byte[] data2=new byte[1024]; DatagramPacket packet2=new DatagramPacket(data2, data2.length); //2.接收服务器响应的数据 socket.receive(packet2); //3.读取数据 System.out.println("我是客户端,服务器说:"+new String(data2)); //4.关闭资源 socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
③线程监听
public class UDPServerThread extends Thread{ DatagramSocket socket; DatagramPacket packet; public UDPServerThread(DatagramSocket socket,DatagramPacket packet) { this.socket=socket; this.packet=packet; } @Override public void run() { try { byte[] data=packet.getData(); //4.读取数据 String info=new String(data); System.out.println("我是服务器,客户端说:"+info); /** * 服务器对客户端数据进行响应 */ //1.定义客户端的IP,端口号,数据 InetAddress address = packet.getAddress(); int port=packet.getPort(); byte[] data2="欢迎您".getBytes(); //2.创建数据报,包含响应的数据信息 DatagramPacket packet2=new DatagramPacket(data2, 0,data2.length, address, port); //3.响应客户端 socket.send(packet2); } catch (IOException e) { e.printStackTrace(); } }}
0 0
- 通过Socket实现UDP(用户数据报)编程
- udp用户数据报协议的实现
- UDP:用户数据报
- UDP:用户数据报
- Java通过Socket实现UDP编程及Socket总结
- 用户数据报协议(UDP) (转)
- (11)UDP:用户数据报协议
- UDP(用户数据报协议)和套接字编程
- UDP用户数据报协议
- UDP 用户数据报协议
- UDP:用户数据报协议
- UDP:用户数据报协议
- UDP -- 用户数据报协议
- 用户数据报协议 UDP
- UDP用户数据报协议
- UDP:用户数据报协议
- 用户数据报协议UDP
- 用户数据报协议UDP
- Dalvik 和 ART区别
- SVN(TortoiseSVN)详细教程(一)--下载与安装部署
- ActionBar SearchView空指针异常
- android中svg文件的使用
- excel2003 操作
- 通过Socket实现UDP(用户数据报)编程
- java.lang.NoClassDefFoundError: org/apache/log4j/Layout
- 用yum查询想安装的软件
- UIGestureRecognizer手势
- Zabbix discovery disk 监控
- cocos2d-x 集成社交分享平台shareSDK
- Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动
- HDOJ1003.Max Sum
- 在xCode中,直接用代码输出对象的内存地址