欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:網(wǎng)絡(luò)協(xié)議 網(wǎng)絡(luò) UDP簡(jiǎn)單總結(jié)

柚子快報(bào)激活碼778899分享:網(wǎng)絡(luò)協(xié)議 網(wǎng)絡(luò) UDP簡(jiǎn)單總結(jié)

http://yzkb.51969.com/

UDP:用戶數(shù)據(jù)報(bào)協(xié)議

特點(diǎn): 無(wú)連接、不可靠通信 不事先建立連接,數(shù)據(jù)按照包發(fā),一包數(shù)據(jù)包含:自己的IP、程序端口、目的地IP、程序端口和數(shù)據(jù)(限制在64KB內(nèi)) 發(fā)送方不管對(duì)方是否在線,數(shù)據(jù)在中間丟失也不管,如果接收方收到數(shù)據(jù)也不返回確認(rèn),故不可靠 Java代碼常用方法

DatagramSocket():創(chuàng)建一個(gè)未綁定到任何本地地址和端口的DatagramSocket對(duì)象。 DatagramSocket socket = new DatagramSocket();

DatagramSocket(int port):創(chuàng)建一個(gè)綁定到指定端口的DatagramSocket對(duì)象。 DatagramSocket socket = new DatagramSocket(8080);

send(DatagramPacket packet):發(fā)送數(shù)據(jù)報(bào)包。 byte[] data = "Hello, world!".getBytes();

DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("localhost"), 8080);

socket.send(packet);

receive(DatagramPacket packet):接收數(shù)據(jù)報(bào)包。 byte[] buffer = new byte[1024];

DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

socket.receive(packet);

setSoTimeout(int timeout):設(shè)置接收超時(shí)時(shí)間(以毫秒為單位)。 socket.setSoTimeout(5000); // 設(shè)置5秒超時(shí) close():關(guān)閉套接字。 socket.close();

bind(SocketAddress bindaddr):將套接字綁定到特定的本地地址和端口。 socket.bind(new InetSocketAddress("localhost", 8080)); getLocalSocketAddress():獲取套接字綁定的本地地址和端口。 SocketAddress localAddress = socket.getLocalSocketAddress();

?下面是一個(gè)簡(jiǎn)單的示例代碼,演示如何使用DatagramSocket發(fā)送和接收UDP數(shù)據(jù)報(bào):

import java.net.*;

public class UDPSocketExample {

public static void main(String[] args) {

try {

// 創(chuàng)建一個(gè)DatagramSocket對(duì)象并綁定到本地端口8080

DatagramSocket socket = new DatagramSocket(8080);

// 準(zhǔn)備發(fā)送的消息字符串

String message = "Hello, UDP!";

// 將消息字符串轉(zhuǎn)換為字節(jié)數(shù)組

byte[] sendData = message.getBytes();

// 獲取接收者的地址(本地主機(jī))和端口號(hào)(8081)

InetAddress receiverAddress = InetAddress.getByName("localhost");

int receiverPort = 8081;

// 創(chuàng)建一個(gè)DatagramPacket對(duì)象,用于發(fā)送數(shù)據(jù)

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, receiverAddress, receiverPort);

// 發(fā)送數(shù)據(jù)報(bào)包

socket.send(sendPacket);

System.out.println("Sent message: " + message);

// 創(chuàng)建一個(gè)字節(jié)數(shù)組用于接收數(shù)據(jù)

byte[] receiveData = new byte[1024];

// 創(chuàng)建一個(gè)DatagramPacket對(duì)象,用于接收數(shù)據(jù)

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

// 接收數(shù)據(jù)報(bào)包

socket.receive(receivePacket);

// 從接收的數(shù)據(jù)報(bào)包中獲取消息字符串

String receivedMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());

System.out.println("Received message: " + receivedMessage);

// 關(guān)閉套接字

socket.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

????????在此示例中,我們使用DatagramSocket實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的UDP通信程序。首先,我們創(chuàng)建了一個(gè)DatagramSocket對(duì)象并綁定到本地端口8080。然后,我們準(zhǔn)備了要發(fā)送的消息字符串,并將其轉(zhuǎn)換為字節(jié)數(shù)組。接著,我們獲取了接收者的地址(本地主機(jī))和端口號(hào)(8081),并創(chuàng)建了一個(gè)DatagramPacket對(duì)象用于發(fā)送數(shù)據(jù)。我們發(fā)送了數(shù)據(jù)報(bào)包,并在控制臺(tái)打印了發(fā)送的消息。接著,我們創(chuàng)建了一個(gè)用于接收數(shù)據(jù)的字節(jié)數(shù)組和DatagramPacket對(duì)象,并接收了從本地端口8081發(fā)送的數(shù)據(jù)報(bào)包。最后,我們從接收的數(shù)據(jù)報(bào)包中獲取消息字符串,并在控制臺(tái)打印接收到的消息。最后,我們關(guān)閉了套接字。

? ? ? ? 當(dāng)然這只是實(shí)現(xiàn)了單發(fā)單收,我們可以利用死循環(huán)實(shí)現(xiàn)一個(gè)客戶端和一個(gè)服務(wù)端的多發(fā)多收。下面我們利用線程實(shí)現(xiàn)多發(fā)多收。

下面是一個(gè)示例代碼,演示如何實(shí)現(xiàn)多發(fā)多收的UDP通信:

import java.net.*;

public class MultiSendReceiveUDP {

public static void main(String[] args) {

try {

// 創(chuàng)建DatagramSocket對(duì)象并綁定到本地端口8080

DatagramSocket socket = new DatagramSocket(8080);

// 啟動(dòng)接收線程

Thread receiverThread = new Thread(new Receiver(socket));

receiverThread.start();

// 創(chuàng)建發(fā)送者線程并啟動(dòng)

Thread sender1 = new Thread(new Sender(socket, "Message 1", "localhost", 8081));

Thread sender2 = new Thread(new Sender(socket, "Message 2", "localhost", 8081));

sender1.start();

sender2.start();

} catch (Exception e) {

e.printStackTrace();

}

}

// 接收者線程類

static class Receiver implements Runnable {

private DatagramSocket socket;

public Receiver(DatagramSocket socket) {

this.socket = socket;

}

@Override

public void run() {

try {

// 創(chuàng)建一個(gè)字節(jié)數(shù)組用于接收數(shù)據(jù)

byte[] receiveData = new byte[1024];

while (true) {

// 創(chuàng)建一個(gè)DatagramPacket對(duì)象,用于接收數(shù)據(jù)

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

// 接收數(shù)據(jù)報(bào)包

socket.receive(receivePacket);

// 從接收的數(shù)據(jù)報(bào)包中獲取消息字符串

String receivedMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());

System.out.println("Received message: " + receivedMessage);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

// 發(fā)送者線程類

static class Sender implements Runnable {

private DatagramSocket socket;

private String message;

private String receiverHost;

private int receiverPort;

public Sender(DatagramSocket socket, String message, String receiverHost, int receiverPort) {

this.socket = socket;

this.message = message;

this.receiverHost = receiverHost;

this.receiverPort = receiverPort;

}

@Override

public void run() {

try {

// 將消息字符串轉(zhuǎn)換為字節(jié)數(shù)組

byte[] sendData = message.getBytes();

// 獲取接收者的地址和端口號(hào)

InetAddress receiverAddress = InetAddress.getByName(receiverHost);

// 創(chuàng)建一個(gè)DatagramPacket對(duì)象,用于發(fā)送數(shù)據(jù)

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, receiverAddress, receiverPort);

// 發(fā)送數(shù)據(jù)報(bào)包

socket.send(sendPacket);

System.out.println("Sent message: " + message);

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

????????在此示例中,我們創(chuàng)建了一個(gè)MultiSendReceiveUDP類,其中包含了main方法,以及Receiver和Sender類,分別用于接收和發(fā)送數(shù)據(jù)。在main方法中,我們創(chuàng)建了一個(gè)DatagramSocket對(duì)象并綁定到本地端口8080,并啟動(dòng)了一個(gè)接收者線程。然后,我們創(chuàng)建了兩個(gè)發(fā)送者線程,并將它們分別啟動(dòng)。每個(gè)發(fā)送者線程將向本地主機(jī)的端口8081發(fā)送一條消息。接收者線程將一直接收來(lái)自發(fā)送者的消息,并在控制臺(tái)打印出來(lái)。

柚子快報(bào)激活碼778899分享:網(wǎng)絡(luò)協(xié)議 網(wǎng)絡(luò) UDP簡(jiǎn)單總結(jié)

http://yzkb.51969.com/

參考閱讀

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19280815.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄