導航:首頁 > 編程語言 > java傳輸udp

java傳輸udp

發布時間:2024-12-30 22:11:33

A. java寫的一個udp的demo用來計算探針傳送過來的數據,怎麼實現一個介面來調用這個數據

Java UDP通信簡單實現
1、Java實現方式
1)server端



/**
*UDPserver端
**/
publicclassUdpServer{
//定義一些常量
privatefinalintMAX_LENGTH=1024;//最大接收位元組長度
privatefinalintPORT_NUM=5066;//port號
//用以存放接收數據的位元組數組
privatebyte[]receMsgs=newbyte[MAX_LENGTH];
//數據報套接字
;
//用以接收數據報
;

publicUdpServer(){
try{
/*******接收數據流程**/
//創建一個數據報套接字,並將其綁定到指定port上
datagramSocket=newDatagramSocket(PORT_NUM);
//DatagramPacket(bytebuf[],intlength),建立一個位元組數組來接收UDP包
datagramPacket=newDatagramPacket(receMsgs,receMsgs.length);
//receive()來等待接收UDP數據報
datagramSocket.receive(datagramPacket);

/******解析數據報****/
StringreceStr=newString(datagramPacket.getData(),0,datagramPacket.getLength());
System.out.println("ServerRece:"+receStr);
System.out.println("ServerPort:"+datagramPacket.getPort());

/*****返回ACK消息數據報*/
//組裝數據報
byte[]buf="Ireceivethemessage".getBytes();
DatagramPacketsendPacket=newDatagramPacket(buf,buf.length,datagramPacket.getAddress(),datagramPacket.getPort());
//發送消息
datagramSocket.send(sendPacket);
}catch(SocketExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
//關閉socket
if(datagramSocket!=null){
datagramSocket.close();
}
}
}
}

2)client


/***
*UDPclientClient端
***/
publicclassUdpClient{

privateStringsendStr="SendString";
privateStringnetAddress="127.0.0.1";
privatefinalintPORT_NUM=5066;

;
;

publicUdpClient(){
try{

/***發送數據***/
//初始化datagramSocket,注意與前面Server端實現的差別
datagramSocket=newDatagramSocket();
//使用DatagramPacket(bytebuf[],intlength,InetAddressaddress,intport)函數組裝發送UDP數據報
byte[]buf=sendStr.getBytes();
InetAddressaddress=InetAddress.getByName(netAddress);
datagramPacket=newDatagramPacket(buf,buf.length,address,PORT_NUM);
//發送數據
datagramSocket.send(datagramPacket);

/***接收數據***/
byte[]receBuf=newbyte[1024];
DatagramPacketrecePacket=newDatagramPacket(receBuf,receBuf.length);
datagramSocket.receive(recePacket);

StringreceStr=newString(recePacket.getData(),0,recePacket.getLength());
System.out.println("ClientReceAck:"+receStr);
System.out.println(recePacket.getPort());


}catch(SocketExceptione){
e.printStackTrace();
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
//關閉socket
if(datagramSocket!=null){
datagramSocket.close();
}
}
}
}

B. Java語言應用中實現UDP協議編程的方法

java UDP主要用到了DatagramSocket和DatagramPacket兩個類。
DatagramSocket類表示用來發送和接收數據報包的套接字。
數據報套接字是包投遞服務的發送或接收點。每個在數據報套接字上發送或接收的包都是單獨編址和路由的。從一台機器發送到另一台機器的多個包可能選擇不同的路由,也可能按不同的順序到達。

DatagramPacket類表示數據報包。
數據報包用來實現無連接包投遞服務。每條報文僅根據該包中包含的信息從一台機器路由到另一台機器。從一台機器發送到另一台機器的多個包可能選擇不同的路由,也可能按不同的順序到達。不對包投遞做出保證。

建議看下API

C. 5 java 如何使用udp協議傳送文件

//發送端SocketSendFile.java
import java.io.*;
import java.net.*;

public class SocketSendFile {
public static final int SER_PORT=666;
public static final int CLI_PORT=8484;
public static final String SER_IP="192.168.0.35";
public static int bufSize = 1024;
public static byte] mess = new bytebufSize];
//建立Socket引用
public static DatagramSocket dp;

public static void main(String] args) throws Exception {
dp = new DatagramSocket(SER_PORT);
//調用構造函數SocketSendFile,並傳遞參數args0](所要傳輸的文件名)
SocketSendFile(args0]);
}

public static void SocketSendFile(String file2) throws Exception {
//定義一個計數器
int pos =0;
//設置寫入流
FileInputStream fis = new FileInputStream(file2);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);

int i;
do {
i = dis.read();
int j=0;
while (j<1024 & i != -1) {
messpos++] = (byte) i;
i=dis.read();
j++;
}
dp.send(new DatagramPacket(mess,pos,InetAddress.getByName(SER_IP),CLI_PORT));
}
while (i != -1);
fis.close();
}
}

//接收端SocketReceiveFile.java
import java.net.*;
import java.io.*;

public class SocketReceiveFile {
public static int bufSize=1024;
public static byte] mess=new bytebufSize];
public static DatagramSocket dp;
public static final int SER_PORT=8484;

public static void main(String] args) throws Exception {
dp = new DatagramSocket(SER_PORT);
SocketReceiveFile(args0]);
}

public static void SocketReceiveFile(String file1) throws Exception {
FileOutputStream fos = new FileOutputStream(file1);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);

int i;
DatagramPacket p = new DatagramPacket(mess,mess.length);

while(true) {
boolean j=false;
while (p.getData().length != 0) {
dos.write(p.getData());
dp.receive(p);
j=true;
}
// System.out.println(new String(p.getData(),0,p.getLength()));
if (j)
System.out.println("文件傳送完畢.");
}
// fos.close();
}
}

閱讀全文

與java傳輸udp相關的資料

熱點內容
找對象app名稱是什麼 瀏覽:160
為什麼選擇童程童美學習編程 瀏覽:738
db2runstats命令 瀏覽:846
matlab怎麼用遺傳演算法 瀏覽:807
程序員喜歡黑色背景 瀏覽:588
音頻信號需要什麼樣的單片機 瀏覽:674
剪力牆牆柱箍筋是否需要加密 瀏覽:163
如何查看伺服器上埠是否打開 瀏覽:296
目前流行編程語言 瀏覽:456
騰訊雲伺服器免流嗎 瀏覽:848
c命令行解析 瀏覽:786
解壓轉移注意力最好的辦法 瀏覽:916
多人協作php 瀏覽:920
linux版notepad 瀏覽:169
androidwifi定位百度 瀏覽:256
百合app是什麼東西 瀏覽:271
天下布魔文件夾名字 瀏覽:748
阿里雲ecs伺服器無法連接 瀏覽:189
安卓如何錄制清晰且流暢的視頻 瀏覽:134
遺傳退火演算法代碼 瀏覽:555