一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java基于socket服務實現UDP協議的方法

Java基于socket服務實現UDP協議的方法

2019-12-19 13:34wo_soul JAVA教程

這篇文章主要介紹了Java基于socket服務實現UDP協議的方法,通過兩個簡單實例分析了java通過socket實現UDP發送與接收的技巧,需要的朋友可以參考下

本文實例講述了Java基于socket服務實現UDP協議的方法。分享給大家供大家參考。具體如下:

示例1:

接收類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.socket.demo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceiveDemo {
 public static void main(String[] args) throws IOException{
  System.out.println("接收端啟動…………");
 /*
  2、建立UDP的socket的服務,必須明確一個端口號
  3、創建數據包,用于儲存接收到的數據,方便用數據包對象的方法解析這些數據
  4、使用DatagramSocket的receive方法將接收到的數據存儲到數據包中
  5、通過數據包的方法解析數據包中的數據
  5、關閉socket服務
  */
  //udpsocket服務,使用DatagramSocket對象
  DatagramSocket ds=new DatagramSocket(10002);
  //使用DatagramPacket將數據封裝到該對象中
  byte[] buf=new byte[1024];
  DatagramPacket dp=new DatagramPacket(buf, buf.length);
  //通過udp的socket服務將數據包發送出去,通過send方法
  ds.receive(dp);
  //通過數據包的方法解析數據包中的數據,比如,地址、端口、數據內容等
  String ip=dp.getAddress().getHostAddress();
  //String name=dp.getAddress().getHostName();
  int port=dp.getPort();
  String text=new String(dp.getData(),0,dp.getLength());
  //System.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text);
  System.out.println("-----"+ip+"----------"+port+"-----"+text);
  //關閉資源
  ds.close();
 }
}

發送類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.socket.demo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UDPSendDemo {
 public static void main(String[] args) throws IOException{
  System.out.println("發送端啟動…………");
 /*
  * 1、創建udp傳輸的發送端
  2、建立UDP的socket的服務
  3、將要發送的數據封裝到數據包中
  4、通過udp的socket服務將數據包發送出去
  5、關閉socket服務
  */
  //udpsocket服務,使用DatagramSocket對象
  DatagramSocket ds=new DatagramSocket(8888);//監聽端口
  //將要發送的數據封裝到數據包中
  String str="udp傳輸演示,go";
  //使用DatagramPacket將數據封裝到該對象中
  byte[] buf=str.getBytes();
  DatagramPacket dp=
    new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.100"),10002);
  //通過udp的socket服務將數據包發送出去,通過send方法
  ds.send(dp);
  //關閉資源
  ds.close();
 }
}

示例2:

接收類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.socket.demo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceiveDemo2 {
 public static void main(String[] args) throws IOException{
  System.out.println("接收端啟動…………");
 /*
  2、建立UDP的socket的服務,必須明確一個端口號
  3、創建數據包,用于儲存接收到的數據,方便用數據包對象的方法解析這些數據
  4、使用DatagramSocket的receive方法將接收到的數據存儲到數據包中
  5、通過數據包的方法解析數據包中的數據
  5、關閉socket服務
  */
  //udpsocket服務,使用DatagramSocket對象
  DatagramSocket ds=new DatagramSocket(10003);
  while(true){
   //使用DatagramPacket將數據封裝到該對象中
   byte[] buf=new byte[1024];
   DatagramPacket dp=new DatagramPacket(buf, buf.length);
   //通過udp的socket服務將數據包發送出去,通過send方法
   ds.receive(dp);//阻塞式的。
   //通過數據包的方法解析數據包中的數據,比如,地址、端口、數據內容等
   String ip=dp.getAddress().getHostAddress();
   //String name=dp.getAddress().getHostName();
   int port=dp.getPort();
   String text=new String(dp.getData(),0,dp.getLength());
   //System.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text);
   System.out.println("-----"+ip+"----------"+port+"-----"+text);
  }
  //關閉資源
  //ds.close();
 }
}

發送類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.socket.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPSendDemo2 {
 public static void main(String[] args) throws IOException{
  System.out.println("發送端啟動…………");
 /*
  * 1、創建udp傳輸的發送端
  2、建立UDP的socket的服務
  3、將要發送的數據封裝到數據包中
  4、通過udp的socket服務將數據包發送出去
  5、關閉socket服務
  */
  //udpsocket服務,使用DatagramSocket對象
  DatagramSocket ds=new DatagramSocket(9999);//監聽端口
  //將要發送的數據封裝到數據包中
  //String str="udp傳輸演示,go";
  BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//鍵盤輸入
  String line=null;
  //使用DatagramPacket將數據封裝到該對象中
  while((line=bufr.readLine())!=null){
   byte[] buf=line.getBytes();//
   DatagramPacket dp=
     new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.100"),10003);
   //通過udp的socket服務將數據包發送出去,通過send方法
   ds.send(dp);
   if("886".equals(line)){
    break;
   }
  }
  //關閉資源
  ds.close();
 }
}

運行效果圖如下:

接收:

Java基于socket服務實現UDP協議的方法

發送:

Java基于socket服務實現UDP協議的方法

希望本文所述對大家的java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 999国产| 美女下面揉出水免费视频 | 国产欧美成人免费观看 | 久久香蕉电影 | 欧美三级免费观看 | 99ri在线视频网 | 91久久综合九色综合欧美98 | 亚洲天堂在线视频观看 | 欧美精品v欧洲高清 | 大陆性出航 | 99精品国产自产在线观看 | 黑人日白人 | 精品一区二区三区波多野结衣 | 美女撒尿无遮挡免费中国 | 亚洲社区在线 | 国产在线看片护士免费视频 | 亚洲国产精品一区二区久久 | 日本一区二区免费在线 | 九九精品成人免费国产片 | 精品国产福利一区二区在线 | 久久久久久久久女黄 | 日日摸日日碰夜夜爽97纠 | 亚洲AV无码乱码在线观看浪潮 | 成人精品免费网站 | 青青成人福利国产在线视频 | 女仆掀起蕾丝裙被打屁股作文 | 午夜dj影院在线视频观看完整 | 9191久久 | 慢慢娇淫 | 亚洲丰满女人ass硕大 | 动漫美女被羞羞产奶 | 99热精品在线播放 | 国产一级特黄aa大片在线 | free性丰满hd性欧美厨房 | 精品国产成人 | 韩日一区二区三区 | 雪恋电影完整版免费观看 | 精品日本三级在线观看视频 | 天天做天天爱天天操 | 日日碰日日操 | 日本三级在丈面前被耍了 |