国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 14:52:47
字體:
來源:轉載
供稿:網友

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

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

服務器端:

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();    }   }  } }

客戶端:

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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰州市| 宝鸡市| 大庆市| 武邑县| 都匀市| 大新县| 鸡西市| 康乐县| 台南县| 铜山县| 长治市| 四子王旗| 大城县| 弥渡县| 观塘区| 息烽县| 当涂县| 白银市| 会昌县| 汉中市| 永定县| 高阳县| 武城县| 灵石县| 冕宁县| 内丘县| 龙泉市| 高安市| 新泰市| 富阳市| 杭州市| 永定县| 湖南省| 息烽县| 宝应县| 清徐县| 疏附县| 盐池县| 满洲里市| 蓝田县| 阿勒泰市|