日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java 传输 udp_java UDP传输

發(fā)布時(shí)間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 传输 udp_java UDP传输 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

①:只要是網(wǎng)絡(luò)傳輸,必須有socket 。

②:數(shù)據(jù)一定要封裝到數(shù)據(jù)包中,數(shù)據(jù)包中包括目的地址、端口、數(shù)據(jù)等信息。

直接操作udp不可能,對(duì)于java語(yǔ)言應(yīng)該將udp封裝成對(duì)象,易于我們的使用,這個(gè)對(duì)象就是DatagramSocket. 封裝了udp傳輸協(xié)議的socket對(duì)象。

因?yàn)閿?shù)據(jù)包中包含的信息較多,為了操作這些信息方便,也一樣會(huì)將其封裝成對(duì)象。這個(gè)數(shù)據(jù)包對(duì)象就是:DatagramPacket.通過(guò)這個(gè)對(duì)象中的方法,就可以獲取到數(shù)據(jù)包中的各種信息。

DatagramSocket具備發(fā)送和接受功能,在進(jìn)行udp傳輸時(shí),需要明確一個(gè)是發(fā)送端,一個(gè)是接收端。

udp的發(fā)送端:

①:建立udp的socket服務(wù),創(chuàng)建對(duì)象時(shí)如果沒(méi)有明確端口,系統(tǒng)會(huì)自動(dòng)分配一個(gè)未被使用的端口。

②:明確要發(fā)送的具體數(shù)據(jù)。

③:將數(shù)據(jù)封裝成了數(shù)據(jù)包。

④:用socket服務(wù)的send方法將數(shù)據(jù)包發(fā)送出去。

⑤:關(guān)閉資源。

udp的接收端:

①:創(chuàng)建udp的socket服務(wù),必須要明確一個(gè)端口,作用在于,只有發(fā)送到這個(gè)端口的數(shù)據(jù)才是這個(gè)接收端可以處理的數(shù)據(jù)。

②:定義數(shù)據(jù)包,用于存儲(chǔ)接收到數(shù)據(jù)。

③:通過(guò)socket服務(wù)的接收方法將收到的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)包中。

④:通過(guò)數(shù)據(jù)包的方法獲取數(shù)據(jù)包中的具體數(shù)據(jù)內(nèi)容,比如ip、端口、數(shù)據(jù)等等。

⑤:關(guān)閉資源。

Eg:

發(fā)送端(客戶端)

import java.net.*;

class? UdpSend{

public static void main(String[] args)throws Exception {

// 1,建立udp的socket服務(wù)。

DatagramSocket ds = new DatagramSocket(8888);//指定發(fā)送端口,這個(gè)可以不指定,系統(tǒng)會(huì)隨機(jī)分配。

// 2,明確要發(fā)送的具體數(shù)據(jù)。

String text = "udp傳輸演示 哥們來(lái)了";

byte[] buf = text.getBytes();

// 3,將數(shù)據(jù)封裝成了數(shù)據(jù)包。

DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("10.1.31.127"),10000);

// 4,用socket服務(wù)的send方法將數(shù)據(jù)包發(fā)送出去。

ds.send(dp);

// 5,關(guān)閉資源。

ds.close();

}

}

接收端(服務(wù)器端)

import java.net.*;

class UdpRece {

public static void main(String[] args) throws Exception{

// 1,創(chuàng)建udp的socket服務(wù)。

DatagramSocket ds = new DatagramSocket(10000);//必須指定,并且和上面的端口號(hào)一樣!

// 2,定義數(shù)據(jù)包,用于存儲(chǔ)接收到數(shù)據(jù)。先定義字節(jié)數(shù)組,數(shù)據(jù)包會(huì)把數(shù)據(jù)存儲(chǔ)到字節(jié)數(shù)組中。

byte[] buf = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf,buf.length);

// 3,通過(guò)socket服務(wù)的接收方法將收到的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)包中。

ds.receive(dp);//該方法是阻塞式方法。

// 4,通過(guò)數(shù)據(jù)包的方法獲取數(shù)據(jù)包中的具體數(shù)據(jù)內(nèi)容,比如ip,端口,數(shù)據(jù)等等。

String ip = dp.getAddress().getHostAddress();

int port = dp.getPort();

String text = new String(dp.getData(),0,dp.getLength());//將字節(jié)數(shù)組中的有效部分轉(zhuǎn)成字符串。

System.out.println(ip+":"+port+"--"+text);

// 5,關(guān)閉資源。

ds.close();

}

}

練習(xí):

通過(guò)鍵盤(pán)錄入獲取要發(fā)送的信息。

將發(fā)送和接收分別封裝到兩個(gè)線程中。

package july76net;

//一個(gè)聊天的例子,利用UDP傳輸協(xié)議

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

//客戶端,發(fā)送端

class Send implements Runnable {

private DatagramSocket ds;

public Send(DatagramSocket ds) {

super();

this.ds = ds;

}

@Override

public void run() {

try {

BufferedReader br = new BufferedReader(new InputStreamReader(

System.in));//數(shù)據(jù)源是鍵盤(pán)錄入

String line;

while ((line = br.readLine()) != null) {

byte[] buf = line.getBytes();

DatagramPacket dp = new DatagramPacket(buf, buf.length,

InetAddress.getByName("localhost"), 10225);

ds.send(dp);

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

// 服務(wù)器端,接收端

class Rece implements Runnable {

private DatagramSocket ds;

public Rece(DatagramSocket ds) {

super();

this.ds = ds;

}

@Override

public void run() {

try {

while (true) {

byte[] buf = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf, 0, buf.length);

ds.receive(dp);

String ip = dp.getAddress().getHostAddress();

String data = new String(dp.getData(), 0, dp.getLength());

System.out.println(ip + "???? " + data);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

public class Demo6 {

public static void main(String[] args) throws Exception {

DatagramSocket sendDs = new DatagramSocket();

DatagramSocket receDs = new DatagramSocket(10225);

new Thread(new Send(sendDs)).start();

new Thread(new Rece(receDs)).start();

}

}

輸出:

你好

127.0.0.1???? 你好

你好

127.0.0.1???? 你好

總結(jié)

以上是生活随笔為你收集整理的java 传输 udp_java UDP传输的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产a国产片 | 巨乳美女被爆操 | 99热这里是精品 | 国产成人三级一区二区在线观看一 | 鲁丝一区二区三区 | 亚洲综合日韩在线 | 国产精品超碰 | 99热综合| 久久久蜜桃一区二区 | www.香蕉视频在线观看 | 成人做爰66片免费看网站 | 日本美女黄色大片 | 国产免费观看视频 | 69xxx免费视频 | 久久国产香蕉视频 | 星空大象mv高清在线观看免费 | 国产黄在线免费观看 | 亚洲乱乱 | 国产伦精品一区二区三区免费迷 | 国产精品福利小视频 | 亚洲视频在线一区二区 | 亚洲最大的av网站 | 人人干在线视频 | 激情六月丁香 | 欧美日韩免费高清一区色橹橹 | 视频一二区 | 国产一级二级三级在线观看 | 亚洲综合精品一区 | 激情久久中文字幕 | 亚洲精品国产精品乱码视色 | 欧美视频一二三 | 亚洲男女在线观看 | 日韩精品极品视频免费观看 | 无码任你躁久久久久久老妇 | 99久久久无码国产精品免费蜜柚 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 亚洲三级成人 | 国产成人福利 | 4438x亚洲最大 | 日本精品一区二区视频 | 视频区小说区图片区 | 免费看一区二区三区 | 人妖性生活视频 | 尤物网在线 | 美女超碰在线 | 青青久视频 | 国产精品久久久久久免费播放 | 性激烈视频在线观看 | 亚洲第一二三四区 | 欧美性www| 久久精品国产大片免费观看 | 不卡视频一区二区 | www超碰在线 | 亚洲免费婷婷 | 1000部拍拍拍18勿入免费视频 | 九九色九九 | 国产成人精品777777 | 日本伊人网 | 麻豆视频在线 | 欧美在线色 | 日日摸夜夜添夜夜添高潮喷水 | 国产精彩视频一区 | 午夜精品久久久久久久久久久久久蜜桃 | 蜜桃视频无码区在线观看 | 久久久久亚洲av成人网人人网站 | 成人精品一区二区三区在线 | 国产中文在线视频 | 午夜少妇 | 日韩第三页 | 欧美午夜一区二区 | 66精品| 日韩在线视频免费观看 | 天天狠天天透 | 在线观看免费大片 | 成人影片在线免费观看 | 最近2018年手机中文字幕版 | 国产精品theporn88 | 成人精品视频一区二区 | 成人做爰免费视频免费看 | 99热成人 | 亚洲一区二区综合 | 美国免费黄色片 | 亚洲欧美激情精品一区二区 | 色av一区| 欧美精品一级二级三级 | 2019中文字幕在线视频 | 久久午夜影视 | 91手机在线观看 | 亚洲毛片儿 | 无码人妻丰满熟妇精品 | 69色综合 | 亚洲专区欧美专区 | 国产一区在线播放 | 午夜神马福利 | 久久精品99| 天天干天天干天天干天天 | 色臀| 男人干女人视频 | 国产女人18毛片水真多18 |