激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - JAVA教程 - java編程實現基于UDP協議傳輸數據的方法

java編程實現基于UDP協議傳輸數據的方法

2020-01-15 14:27awj3584 JAVA教程

這篇文章主要介紹了java編程實現基于UDP協議傳輸數據的方法,較為詳細的分析了UDP協議的原理及Java編程實現數據傳輸客戶端與服務器端的相關技巧,需要的朋友可以參考下

本文實例講述了java編程實現基于UDP協議傳輸數據的方法。分享給大家供大家參考,具體如下:

UDP協議(User Datagram Protocol,用戶數據報協議)不同于TCP協議,它是不可能靠的,但是它比TCP協議具有更快的傳輸速度,UDP發送的數據單元稱為數據報,當網絡傳輸UDP傳輸UDP數據報是無法保證數據能夠到達目的地,也無法保證按發送的順序到達目的地,也就是說先發送了“hello”,再發送了“world”,但接收方可能會先收到“world”,再收到“hello”,也有可能收不到數據,為什么呢?因為它是不可能靠的,在傳輸途中可能丟失了。但UDP比TCP跟適合與傳輸實時音頻。下面是一個簡單的UPD傳輸數據報的例子

服務器端:

?
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
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class EchoServer {
 private DatagramSocket datagramSocket;
 private final int port = 8088;
 public static void main(String[] args) throws SocketException {
  new EchoServer().service();
 }
 public EchoServer() throws SocketException{
  datagramSocket = new DatagramSocket(port);
  System.out.println("服務器啟動");
 }
 public String echo(String msg){
  return "echo:"+msg;
 }
 public void service(){
  while (true) {
   try {
    DatagramPacket packet = new DatagramPacket(new byte[512], 512);
    datagramSocket.receive(packet);
    String msg = new String(packet.getData(), 0, packet.getLength());
    System.out.println(packet.getAddress()+"/"+packet.getPort()+" msg:"+msg);
    packet.setData(echo(msg).getBytes());
    datagramSocket.send(packet);
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}

客戶端:

?
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
39
40
41
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class EchoClient {
 private String remoteHost="localhost";
 private int remotePort=8088;
 private DatagramSocket datagramSocket;
 public EchoClient() throws SocketException{
  datagramSocket = new DatagramSocket();
 }
 public static void main(String[] args) throws SocketException {
  new EchoClient().talk();
 }
 public void talk(){
  try {
   BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   String msg = null;
   InetAddress address = InetAddress.getByName(remoteHost);
   while ((msg=reader.readLine())!=null) {
    //發送數據報
    byte [] buffer = msg.getBytes();
    DatagramPacket packet = new DatagramPacket(buffer,buffer.length, address, remotePort);
    datagramSocket.send(packet);
    //接收數據報
    DatagramPacket inputPacket = new DatagramPacket(new byte[512], 512);
    datagramSocket.receive(inputPacket);
    System.out.println(new String(inputPacket.getData(), 0 , inputPacket.getLength()));
    if("bye".equals(msg)){
     break;
    }
   }
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   datagramSocket.close();
  }
}

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 销魂美女一区二区 | 久久爽精品区穿丝袜 | 久久久久成人免费 | 国产羞羞视频在线观看 | 久久99国产精品久久99果冻传媒 | 全黄性色大片 | 久久精品一区视频 | 久久国产精品久久久久久电车 | 爱高潮www亚洲精品 欧美黄色一级片视频 | 久久精品无码一区二区三区 | 深夜视频福利 | 黄色伊人网站 | 娇妻被各种姿势c到高潮小说 | 精品二区在线观看 | 在线观看精品视频 | 国产精品国产三级国产aⅴ无密码 | 中日韩乱码一二新区 | 久久久久久久久久久综合 | 亚洲精品欧美在线 | 欧美另类视频在线 | 欧美一级淫片免费视频1 | 91精品国产毛片 | av在线高清观看 | 中文在线观看视频 | 欧美一级理论 | 亚洲电影免费观看国语版 | 得得啪在线视频 | 午夜视频国产 | 永久免费一区二区三区 | 国产 视频 一区二区 | 久久精品国产精品亚洲 | 2017亚洲男人天堂 | 国产精品视频一区二区三区综合 | 欧美高清视频一区 | 国产精品hd免费观看 | 欧美一级毛片一级毛片 | 高清国产午夜精品久久久久久 | 蜜桃传免费看片www 一本色道精品久久一区二区三区 | 国产亚洲精品久久久久久久久久 | 亚洲综合无码一区二区 | 黄色aaa视频 |