黑马程序员技术交流社区
标题:
关于网络编程这块有个小问题,知道的麻烦进来下
[打印本页]
作者:
H马凯
时间:
2015-3-28 08:18
标题:
关于网络编程这块有个小问题,知道的麻烦进来下
今天编写了一个UDP传输,出现个小问题,我编写的是两个主函数那个,也就是发送端和接收端, 而且把我写运行的是接收端,为什么运行发送端后接收端没反应?收不到发送端发过来的数据是怎么回事??
还有一点就是:当我把发送端的发送的IP地址改为 192.168.1.255 就可以接受到了 这又是为什么啊? 搞不懂 谁能具体说下???
/*UDP传输
*/
/*发送端
步骤:1、建立UDP的socket服务,也就是端点
2、将要提供的数据封装到数据包中
3、通过socket服务的发送功能将数据发出
4、关闭资源
*/
import java.net.*;
class DatagramSocketSend
{
public static void main(String[] args) throws Exception
{
//创建UDP的socket服务
DatagramSocket out = new DatagramSocket();
//要发送的数据
byte [] data = "UDP come to Be".getBytes();
//建立数据包,实现无线投递服务
DatagramPacket pack =
new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.254"),10010);
//通过socket服务的sent方法将数据发出
out.send(pack);
//关闭资源
out.close();
}
}
/*接收端
步骤:1、创建UDP接收端服务,并指定端口号
2、定义一个数据包,用来存储接收到的字节数据,
因为数据包对象中有更多功能可以提取字节数据中的不同数据信息
3、通过Socket服务的receive方法将接收到的数据存入已定义好的数据包中
4、使用数据包的特有功能,对这些不同的数据取出,并打印到控制台
5、关闭资源
*/
class DatagramSocketReceive
{
public static void main(String[] args) throws Exception
{
//创建socket服务,并指定端口号为10000,方便测试
DatagramSocket ds = new DatagramSocket(10010);
//定义一个数据包,用于存储接收到的数据
byte [] buff = new byte[1024];
DatagramPacket pack = new DatagramPacket(buff,buff.length);
//通过socket服务的receive方法将接收到的数据存入数据包
ds.receive(pack); //该方法是阻塞状态
//获取信息
//获取发送端IP
System.out.println(pack.getAddress().getHostAddress());
//获取发送端端口号
System.out.println(pack.getPort());
//获取发送端发送的数据的长度
System.out.println(pack.getLength());
//获取发送端发送的数据
System.out.println(new String(pack.getData(),0,pack.getLength()));
}
}
复制代码
作者:
艺多不压身丶
时间:
2015-3-28 08:20
流的。问题,收不到数据,或者数据根本就没发出去
作者:
H马凯
时间:
2015-3-28 09:25
艺多不压身丶 发表于 2015-3-28 08:20
流的。问题,收不到数据,或者数据根本就没发出去
不对啊 因为我法发送端要发送的IP地址改为 192.168.1.255 就可以收到啊 这又是什么原因???
作者:
高光天
时间:
2015-3-28 09:28
你的ip是192.168.1.254吗 自己在控制台中ipconfig下 或者直接编程自己看下ip
如果只在自己机器做测试的话建议使用127.0.0.1
作者:
z47057554
时间:
2015-3-28 10:47
本帖最后由 z47057554 于 2015-3-28 10:49 编辑
上+1,192.168.1.255是广播地址,只要你的 IP 在 192.168.1.1~254都能收到
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2