在UDP Java编程中,我没有从远程系统收到任何消息
在我的电脑上运行的第一个程序在UDP Java编程中,我没有从远程系统收到任何消息,java,udp,Java,Udp,在我的电脑上运行的第一个程序 import java.io.*; import java.net.*; public class NewUDP22 /*main class*/ { public static void main(String arg[])throws Exception { /*calling both threads ReceiveDataClass and SendDataClass*/
import java.io.*;
import java.net.*;
public class NewUDP22 /*main class*/
{
public static void main(String arg[])throws Exception
{
/*calling both threads ReceiveDataClass and SendDataClass*/
ReceiveDataClass t=new ReceiveDataClass();
SendDataClass obj=new SendDataClass();
t.start();/*starting threads here*/
obj.start();
}
}
class ReceiveDataClass extends Thread
{
byte receiveData[]=new byte[10024];
DatagramSocket ds;
DatagramPacket dp;
public void run()
{
try{
while(true)
{
//byte receiveData[]=new byte[1024];
ds=new DatagramSocket(50000);
dp=new DatagramPacket(receiveData,receiveData.length);
ds.receive(dp);
String str=new String(dp.getData());
System.out.println("person1: "+str);
ds.close();
}
}
catch(Exception e){}
}
}
class SendDataClass extends Thread
{
public void run()
{
try
{
while(true)
{
byte sendData[]=new byte[100924];
DatagramPacket dp;
InetSocketAddress sd=new InetSocketAddress("192.168.8.101",40000);
DatagramSocket ds=new DatagramSocket();
BufferedReader dis;
dis = new BufferedReader(new InputStreamReader(System.in));
String data=dis.readLine();
System.out.println("me: "+data);
sendData=data.getBytes();
dp=new DatagramPacket(sendData,sendData.length,sd);
ds.send(dp);
ds.close();
}
}
catch(IOException e){}
}
}
这是在不同系统上运行的第二个程序
import java.io.*;
import java.net.*;
public class NewUDP2 /*main class*/
{
public static void main(String arg[])throws Exception
{
/*calling both threads ReceiveDataClass and SendDataClass*/
ReceiveDataClass t=new ReceiveDataClass();
SendDataClass obj=new SendDataClass();
t.start();/*starting threads here*/
obj.start();
}
}
class ReceiveDataClass extends Thread
{
byte receiveData[]=new byte[10024];
DatagramSocket ds;
DatagramPacket dp;
public void run()
{
try{
while(true)
{
//byte receiveData[]=new byte[1024];
ds=new DatagramSocket(40000);
dp=new DatagramPacket(receiveData,receiveData.length);
ds.receive(dp);
String str=new String(dp.getData());
System.out.println("person1: "+str);
ds.close();
}
}catch(Exception e){}
}
}
class SendDataClass extends Thread
{
public void run()
{
try
{
while(true)
{
byte sendData[]=new byte[100924];
DatagramPacket dp;
InetSocketAddress sd=new InetSocketAddress("192.168.8.101",50000);
DatagramSocket ds=new DatagramSocket();
BufferedReader dis;
dis = new BufferedReader(new InputStreamReader(System.in));
String data=dis.readLine();
System.out.println("me: "+data);
sendData=data.getBytes();
dp=new DatagramPacket(sendData,sendData.length,sd);
ds.send(dp);
ds.close();
}
}catch(IOException e){}
}
}
当我在两个不同的系统上运行这两个程序时,我可以在第二个系统上发送消息,他也在接收消息。但当远程系统向我的系统发送消息时,我无法获得任何消息,即使消息是由远程系统发送的。我试了所有我能做的方法。这是我大学的一个项目
以下是两个系统的屏幕截图:
所有编码都正确。只需关闭系统中的windows防火墙以及其他防病毒软件。因为它不允许接收任何类型的UDP数据包。请删除Android标记,这与此无关