package?com.test;
/*
?*?客戶端類
?*/
import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.DatagramSocket;
import?java.net.InetAddress;
import?java.net.InetSocketAddress;
import?java.net.UnknownHostException;
public?class?UDPclient?{
public?static?void?main(String[]?args)?throws?IOException?{
/*
?*?向服務(wù)端發(fā)送信息
?*/
//定義客戶端地址、端口和數(shù)據(jù)
InetAddress?address=InetAddress.getLocalHost();
int?port=8800;
byte[]?data="user:tom;key:123".getBytes();
//創(chuàng)建DatagramPacket對(duì)象,包含數(shù)據(jù)信息
DatagramPacket?packet=new?DatagramPacket(data,?data.length,?address,?port);
//創(chuàng)建DatagramSocket對(duì)象
DatagramSocket?socket=new?DatagramSocket();
//發(fā)送數(shù)據(jù)
socket.send(packet);
/*
?*?接收服務(wù)端信息
?*/
//創(chuàng)建另一個(gè)DatagramSocket對(duì)象
DatagramSocket?socket2=new?DatagramSocket();
//創(chuàng)建數(shù)據(jù)報(bào),用于接收信息
byte[]?data2=new?byte[1024];
DatagramPacket?packet2=new?DatagramPacket(data2,?data2.length);
//接收信息
socket2.receive(packet2);
//輸出信息
String?reply=new?String(data2);
System.out.println("我是客戶端,服務(wù)器說(shuō):"+reply);
//關(guān)閉資源
socket.close();
socket2.close();
}
}
2016-07-02
剛剛有點(diǎn)問(wèn)題,應(yīng)該是在37行代碼之前加一句socket2.send(packet)
2016-07-02
我沒(méi)有實(shí)際運(yùn)行你的代碼,只是猜測(cè)一下:是否阻塞在代碼的第37行了呢?
第37行socket2.receive(packet2);是在接受服務(wù)端的響應(yīng),但是你的這個(gè)socket2并沒(méi)有向服務(wù)端發(fā)消息,所以也就不會(huì)收的服務(wù)端的響應(yīng)。
可以嘗試在37行代碼之前加一句socket2.send(packet2);? 看看是否還阻塞。