Java 基于UDP 多客户端通信 您所在的位置:网站首页 java实现聊天记录保存 Java 基于UDP 多客户端通信

Java 基于UDP 多客户端通信

#Java 基于UDP 多客户端通信| 来源: 网络整理| 查看: 265

一、前言

今天是1024,先祝大家少脱发,多挣钱。

二、UDP

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

三、实现

用到的主要包装类

DatagramPacket//数据报 DatagramSocket//套接字

UDPCilent.java 客户端实现

import javax.xml.crypto.Data; import java.io.IOException; import java.net.*; public class UDPCilent { public static void main(String[] args) throws IOException { //根据localhost获取IP地址 InetAddress inetAddress = InetAddress.getByName("localhost"); //指定端口 int port = 8800; //准备信息 byte[] bytes="用户名WYH123,密码123".getBytes(); //将信息放到数据报中 DatagramPacket packet=new DatagramPacket(bytes,bytes.length,inetAddress,port); //使用套接字发送数据报 DatagramSocket socket =new DatagramSocket(); socket.send(packet); System.out.println("已向服务器端发送数据,等待服务器的响应"); //创建第二个数据包,用于保存响应 byte[] bytes1=new byte[1024]; DatagramPacket packet1=new DatagramPacket(bytes1,bytes1.length); socket.receive(packet1); System.out.println("接收到的服务器响应为:"+new String(bytes1,0,bytes1.length)); } }

UDPServer.java 服务端实现

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; /** 基于UDP的服务器端 */ public class UDPServer { public static void main(String[] args) throws IOException { DatagramSocket socket=new DatagramSocket(8800); System.out.println("***服务器端已经启动***"); byte[] data = new byte[1024]; DatagramPacket packet=new DatagramPacket(data,data.length); //不断地去接受数据报 while(true) { socket.receive(packet); System.out.println("服务器接收到的信息为:"+new String(data,0,data.length)); ServerThread serverThread=new ServerThread(packet); serverThread.run(); } } }

ServerThread.java

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class ServerThread extends Thread { DatagramPacket packet=null; public ServerThread(DatagramPacket packet) { this.packet=packet; } @Override public void run() { try { //向客户端响应 InetAddress inetAddress=packet.getAddress();//获取刚才客户端的地址 int port =packet.getPort(); //准备数据 byte[] data2="欢迎您".getBytes(); //创建数据报 DatagramPacket packet1=new DatagramPacket(data2,data2.length,inetAddress,port); DatagramSocket datagramSocket=new DatagramSocket(); datagramSocket.send(packet1); datagramSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有