Udp简单的服务器与客户端07

UDP协议:
UDP协议传输数据是不可靠的,在java中,java.util.DatagramSocket负责接收和发送UDP数据报,java.util.DatagramPacket表示UDP数据表。每个
DatagramSocket与一个本底地址绑定,每个DatagramSocket可以把UDP数据报发送给任意一个远程DatagramSocket,也可以接收来自任意一个远程的
DatagramSocket的UDP数据报。在UDP数据报中包含了目的地址信息,DatagramSocket根据该信息把数据报发送到目的地

UDP服务端

1public class EchoServer{ 2 3 private int port = 8089; 4 private DatagramSocket socket; 5 6 public EchoServer()throws IOException{ 7 socket = new DatagramSocket(port); 8 System.out.println("服务端启动"); 9 } 10 11 public String ehco(String msg){ 12 return "ehco:"+msg; 13 } 14 15 public void service(){ 16 while(true){ 17 try { 18 //创建一个数据报对象 19 DatagramPacket packet = new DatagramPacket(new byte[512], 512); 20 socket.receive(packet);//接收来自任意一个EhcoClient的数据报 21 String msg = new String(packet.getData(), 0, packet.getLength()); 22 System.out.println(packet.getAddress()+":"+packet.getPort()+">"+msg); 23 packet.setData(ehco(msg).getBytes());//给EchoClient发送数据报 24 socket.send(packet); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 } 29 } 30 31 public static void main(String[] args) throws IOException { 32 new EchoServer().service(); 33 } 34 35}

UDP客户端

1public class EchoClient { 2 3 private String remoteHost = "localhost"; 4 private int remotePort = 8089; 5 private DatagramSocket socket; 6 7 public EchoClient() throws SocketException{ 8 socket = new DatagramSocket();//与本地任意的端口绑定 9 } 10 11 public void talk() throws IOException{ 12 try{ 13 //获取服务端ip地址 14 InetAddress remoteIP = InetAddress.getByName(remoteHost); 15 16 BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in)); 17 String msg = null; 18 while((msg = localReader.readLine()) != null){ 19 byte[] outputData = msg.getBytes(); 20 DatagramPacket outputPacket = new DatagramPacket( 21 outputData, outputData.length,remoteIP,remotePort); 22 23 socket.send(outputPacket);//发送数据报 24 25 DatagramPacket inputPacket = new DatagramPacket(new byte[512], 512); 26 socket.receive(inputPacket);//接收EchoServer的数据报 27 System.out.println(new String(inputPacket.getData(),0,inputPacket.getLength())); 28 if(msg.equals("bye")){ 29 break; 30 } 31 } 32 }catch (Exception e) { 33 e.printStackTrace(); 34 }finally{ 35 socket.close(); 36 } 37 } 38 39 public static void main(String[] args) throws SocketException, IOException { 40 new EchoClient().talk(); 41 } 42 43}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )