我写了一个Java的UDP网络通讯,就是在本机的时候就可以接收到消息,但是两台机器就不行了,详细: 100
(已经确定端口没有被绑定)我写了一个关于Java的UDP网络通讯,一个客户端UDPClient.java,一个服务端UDPServer.java,这两个程序我先运行UDP...
(已经确定端口没有被绑定)我写了一个关于Java的UDP网络通讯,一个客户端UDPClient.java,一个服务端UDPServer.java,这两个程序我先运行UDPClient.java之后,我再运行UDPServer.java,然后本机运行很完美;但是当我把UDPClient.java改成别人电脑的IP地址放到别人电脑运行,而我的电脑运行UDPServer.java,却发现别人电脑无法接收到我发的信息。
可能说的不太清楚,我截个图吧!
两个源程序:
客户端:
import java.net.*;
public class UDPClient{
public static void main(String args[]) throws Exception{// 所有异常抛出
DatagramSocket ds = null ;// 定义接收数据报的对象
byte[] buf = new byte[1024] ;// 开辟空间,以接收数据
DatagramPacket dp = null ;// 声明DatagramPacket对象
ds = new DatagramSocket(5789) ;// 客户端在9000端口上等待服务器发送信息
dp = new DatagramPacket(buf,1024) ; // 所有的信息使用buf保存
ds.receive(dp) ;// 接收数据
String str = new String(dp.getData(),0,dp.getLength()) + "FROM 主机:" +
dp.getAddress().getHostAddress() + ",端口:" + dp.getPort() ;
System.out.println(str) ;// 输出内容
}
};
服务端:
import java.net.*;
public class UDPServer{
public static void main(String args[]) throws Exception{// 所有异常抛出
DatagramSocket ds = null ;// 定义发送数据报的对象
DatagramPacket dp = null ;// 声明DatagramPacket对象
ds = new DatagramSocket(3000) ;// 服务端在3000端口上等待服务器发送信息
String str = "hello World!!!" ;
dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),5789) ; // 这在本机可以完美运行,但是我把localhost修改成别人电脑的IP地址,发现别人是接收不了,
System.out.println("发送信息。") ;
ds.send(dp);// 发送信息出去
ds.close() ;
}
}; 展开
可能说的不太清楚,我截个图吧!
两个源程序:
客户端:
import java.net.*;
public class UDPClient{
public static void main(String args[]) throws Exception{// 所有异常抛出
DatagramSocket ds = null ;// 定义接收数据报的对象
byte[] buf = new byte[1024] ;// 开辟空间,以接收数据
DatagramPacket dp = null ;// 声明DatagramPacket对象
ds = new DatagramSocket(5789) ;// 客户端在9000端口上等待服务器发送信息
dp = new DatagramPacket(buf,1024) ; // 所有的信息使用buf保存
ds.receive(dp) ;// 接收数据
String str = new String(dp.getData(),0,dp.getLength()) + "FROM 主机:" +
dp.getAddress().getHostAddress() + ",端口:" + dp.getPort() ;
System.out.println(str) ;// 输出内容
}
};
服务端:
import java.net.*;
public class UDPServer{
public static void main(String args[]) throws Exception{// 所有异常抛出
DatagramSocket ds = null ;// 定义发送数据报的对象
DatagramPacket dp = null ;// 声明DatagramPacket对象
ds = new DatagramSocket(3000) ;// 服务端在3000端口上等待服务器发送信息
String str = "hello World!!!" ;
dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),5789) ; // 这在本机可以完美运行,但是我把localhost修改成别人电脑的IP地址,发现别人是接收不了,
System.out.println("发送信息。") ;
ds.send(dp);// 发送信息出去
ds.close() ;
}
}; 展开
3个回答
展开全部
先ping一下对方的ip,看有没有ping通呢
更多追问追答
追问
没有通呢!
ping我的ip时候,大概显示:
10.0.23.23 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
ping对方的ip时候,大概显示:
192.168.1.246 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
那我该怎么办啊??
追答
不是在一个局域网麽?
ping自己的ip肯定能ping通的。
如果两台机子互ping不通说明网络没有构架好。建议楼主看看防火墙有没有关闭。先把网络构建好,你这个程序应该没问题的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
防火墙关了没?
追问
必须关的啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-24
展开全部
为什么改服务端而不是改客户端的 IP 呢???
追问
我就是把localhost改成别人电脑的IP地址啊,所以只能在服务端那里修改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询