程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java基於socket辦事完成UDP協定的辦法

Java基於socket辦事完成UDP協定的辦法

編輯:關於JAVA

Java基於socket辦事完成UDP協定的辦法。本站提示廣大學習愛好者:(Java基於socket辦事完成UDP協定的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java基於socket辦事完成UDP協定的辦法正文


本文實例講述了Java基於socket辦事完成UDP協定的辦法。分享給年夜家供年夜家參考。詳細以下:

示例1:

吸收類:

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

發送類:

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:

吸收類:

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

發送類:

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法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved