Java隨記: Socket通信

服務(wù)器端

1.創(chuàng)建服務(wù)器端DatagramSocket,指定端口

DatagramSocket socket = new DatagramSocket(9900);

2.創(chuàng)建數(shù)據(jù)報(bào),用于接收客戶端發(fā)送的數(shù)據(jù)

byte[] data = new  byte[1024];
DatagramPacket packet = new DatagramPacket(data,data.length);

3.等待客戶端的消息

socket.receive(packet); //此方法在接收到數(shù)據(jù)前會(huì)一直堵塞

4.向客戶端反饋數(shù)據(jù)

//1.定義客戶端的地址,端口號(hào),數(shù)據(jù)
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data1 = "服務(wù)已經(jīng)接收到了數(shù)據(jù),歡迎您!!!".getBytes();
//2.創(chuàng)建數(shù)據(jù)報(bào),包含響應(yīng)的數(shù)據(jù)
DatagramPacket packet1 = new DatagramPacket(data1,data1.length,address,port);
//3.響應(yīng)客戶端
socket.send(packet1);
//4.關(guān)閉資源
socket.close();

客戶端:

1.向服務(wù)器端發(fā)送數(shù)據(jù)

/** 
* 向服務(wù)器端發(fā)送數(shù)據(jù)
 */
//1.定義服務(wù)器的地址.端口號(hào),數(shù)據(jù)
InetAddress address = InetAddress.getByName("");  //指定服務(wù)器地址
int port = 9900;  //指定服務(wù)器端口
//即將發(fā)送的數(shù)據(jù)
byte[] data = "用戶名: admin; 密碼: 123".getBytes();
//2.創(chuàng)建數(shù)據(jù)報(bào),包含發(fā)送的數(shù)據(jù)信息
DatagramPacket packet = new DatagramPacket(data,data.length,address,port);
//3.創(chuàng)建DatagramSocket 對(duì)象
DatagramSocket socket = new DatagramSocket();
//4.向服務(wù)器端發(fā)送數(shù)據(jù)
socket.send(packet);

2.接收服務(wù)端響應(yīng)的數(shù)據(jù)

/** 
* 接收服務(wù)端響應(yīng)的數(shù)據(jù)
 */
//1.創(chuàng)建數(shù)據(jù),用于接收服務(wù)器端響應(yīng)的數(shù)據(jù)
byte[] data2 = new byte[1024];
DatagramPacket packet1 = new DatagramPacket(data2,data2.length);
//接收服務(wù)器的數(shù)據(jù)
socket.receive(packet1);
//讀取數(shù)據(jù)
String reply = new String(data2,0,packet1.getLength());System.out.println("我是客戶端,服務(wù)器說(shuō): " + reply);
//4.關(guān)閉資源
socket.close();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容