UDP实验课01

编程入门 行业动态 更新时间:2024-10-13 10:30:38

<a href=https://www.elefans.com/category/jswz/34/1770067.html style=UDP实验课01"/>

UDP实验课01

实验课上测试的源码。

1)服务器端

Code:
  1. importjava.io.*;
  2. importjava.*;
  3. //服务器端
  4. publicclassUDPServerTest{
  5. staticpublicvoidmain(Stringargs[]){
  6. DatagramSocketreceiveSocket=null;
  7. try{
  8. //DatagramSocket(intport):创建实例,并固定监听Port端口的报文。通常用于服务端
  9. receiveSocket=newDatagramSocket(55511);
  10. bytebuf[]=newbyte[1000];
  11. //DatagramPacket(byte[]buf,intlength):将数据包中Length长的数据装进Buf数组,一般用来接收客户端发送的数据。
  12. DatagramPacketreceivePacket=newDatagramPacket(buf,buf.length);
  13. System.out.println("开始接受数据:");
  14. booleanflag=true;//作为接收完之后退出的标记
  15. while(flag){
  16. //接收数据报文到d中。receive方法产生一个“阻塞”。“阻塞”是一个专业名词,它会产生一个内部循环,
  17. //使程序暂停在这个地方,直到一个条件触发。
  18. receiveSocket.receive(receivePacket);
  19. Stringname=receivePacket.getAddress().toString();
  20. System.out.println("/n来自主机:"+name+"/n端口:"
  21. +receivePacket.getPort());
  22. //从实例中取得报文的Byte数组编码
  23. Strings=newString(receivePacket.getData(),0,receivePacket
  24. .getLength());
  25. System.out.println("接受到的数据是:"+s);
  26. flag=false;
  27. //需关闭连接,也关闭端口。
  28. receiveSocket.close();
  29. }
  30. }catch(SocketExceptione){
  31. receiveSocket.close();
  32. e.printStackTrace();
  33. System.exit(-1);
  34. }catch(IOExceptione){
  35. receiveSocket.close();
  36. System.out.println("网络通讯出现错误,问题在"+e.toString());
  37. }
  38. }
  39. }

2)客户端

Code:
  1. importjava.io.*;
  2. importjava.*;
  3. //客户端
  4. publicclassUDPClientTest{
  5. publicstaticvoidmain(Stringargs[]){
  6. DatagramSocketsendSocket=null;
  7. try{
  8. //DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。
  9. //DatagramSocket(intport):创建实例,并固定监听Port端口的报文。通常用于服务端
  10. sendSocket=newDatagramSocket();
  11. Stringstring="whoau没死过,不知道dead的感觉";
  12. byte[]databyte=newbyte[100];
  13. databyte=string.getBytes();
  14. //从Buf数组中,取出Length长的数据创建数据包对象,目标是clientAddress地址,clientPort端口,通常用来发送数据给客户端。此处事发送给服务器端
  15. DatagramPacketsendPacket=newDatagramPacket(databyte,
  16. databyte.length,InetAddress.getByName("222.17.97.152"),
  17. 55511);
  18. //发送报文sendPacket到目的地
  19. sendSocket.send(sendPacket);
  20. System.out.println("客户端开始传送数据!");
  21. sendSocket.close();
  22. }catch(SocketExceptione){
  23. sendSocket.close();
  24. e.printStackTrace();
  25. System.out.println("不能打开数据报Socket,或数据报Socket无法与指定端口连接!");
  26. }catch(IOExceptionioe){
  27. sendSocket.close();
  28. System.out.println(ioe.toString());
  29. }
  30. }
  31. }

总结:异常或正常退出时,最好调用close方法,否则可能造成资源无法收回。

更多推荐

UDP实验课01

本文发布于:2024-02-10 22:26:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1677641.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:UDP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!