所以我尝试创建一个简单的服务器客户端应用程序。
我有服务器,它将消息多播到订阅的客户端。
客户显然可以订阅或取消订阅。
这是套接字的服务器端代码
try // create DatagramSocket for sending and receiving packets
{
socket = new DatagramSocket( 6666 );
} // end try
catch ( SocketException socketException )
{
System.exit( 1 );
} // end catch
我还创建了一个等待传入口袋的线程
while(true)
{
try // receive packet, display contents, return copy to client
{
byte[] data = new byte[ 100 ]; // set up packet
DatagramPacket receivePacket =
new DatagramPacket( data, data.length );
socket.receive( receivePacket ); // wait to receive packet
String Message = receivePacket.getData().toString();
.........
这是客户端
try {
socket = new DatagramSocket();
} catch (SocketException ex) {
displayArea.append( ex + "\n" );
}
这里我尝试发送数据包
byte[] data = message.getBytes(); // convert to bytes
try {
// create sendPacket
DatagramPacket sendPacket = new DatagramPacket( data,
data.length, InetAddress.getLocalHost(), 6666 );
} catch (UnknownHostException ex) {
displayArea.append( ex + "\n" );
}
嗯,问题是我不认为数据包到达服务器,我知道线程正在等待数据包,我可以在调试中看到它确实到达socket.receive
部分,但是,没有发生的情况。
我在同一台计算机上使用客户端和服务器。
知道我做错了什么吗?
感谢。
答案 0 :(得分:0)
byte[] data = message.getBytes(); // convert to bytes
try {
DatagramPacket sendPacket =
new DatagramPacket( data, data.length, InetAddress.getLocalHost(), 6666 );
socket.send( sendPacket ); //<<<<<<<<<<<<<<<<<<< REQUIRED
}
catch( UnknownHostException ex ) {
displayArea.append( ex + "\n" );
}