- 论坛徽章:
- 0
|
我学习linux网络编程,看的书是《UNIX网络编程》第三版。
我有两天电脑,地址分别是192.168.1.101和192.168.1.102.
每台电脑自己给自己发消息都可以成功收到,但是给另一台发就不成功。
我重启进入windows,还用这个程序,则互相通信可以成功。
我用一个linux和一个windows,结果linux可以发出去,却收不到消息,不知道为什么,请求大家帮助。小弟不胜感激。
下面是程序(Java):
发送方:
iimport java.io.IOException;
import java.net.*;
public class UdpSendOut {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
DatagramSocket ds = new DatagramSocket();
String str = "hello you world";
DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),
InetAddress.getByName("192.168.1.101"),3000);
ds.send(dp);
ds.close();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
接收方:
import java.io.IOException;
import java.net.*;
public class UdpRecv {
public static void main(String[] args) {
DatagramSocket ds;
try {
ds = new DatagramSocket(3000);
byte [] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,1024);
ds.receive(dp);
String strRecv = new String (dp.getData(),0,dp.getLength())+" from "+
dp.getAddress().getHostAddress()+":"+dp.getPort());
System.out.println(strRecv);
ds.close();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} |
|