黑马程序员技术交流社区
标题:
关于UDP的发送与接收,大家来帮忙看看什么情况
[打印本页]
作者:
走遍世界找寻你
时间:
2013-9-2 08:35
标题:
关于UDP的发送与接收,大家来帮忙看看什么情况
import java.net.*;
class UdpSend
{
public static void main(String[] args) throws Exception
{
//通过DatagramSocket对象,创建UDP服务
DatagramSocket ds = new DatagramSocket();
//确定数据,并封装成数据包,DatagramPacket(byte[] buf,int length,InetAddress address,int port )
byte[] buf = "udp ge man lail e".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.153"),10000);
//通过socket服务,将已有数据包发送,通过send方法。
ds.send(dp);
//关闭资源
ds.close();
}
}
class UdpRece
{
public static void main(String[] args) throws Exception
{
//简历udp socket服务,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//定义数据包,用于储存数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//通过receive方法接收数据存入数据包
ds.receive(dp);
//通过数据包的方法获取其中数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+"::::"+port);
//关闭资源
ds.close();
}
}
异可以通过,但是发送的数据接收不到,是怎么回事?求帮助,求解答!!!
作者:
辛春鹏
时间:
2013-9-2 09:04
你接收到的数据存在data字符串中,可是你并没有打印出来啊。你只打印了ip和端口号
作者:
binghaiwang
时间:
2013-9-2 09:14
本帖最后由 binghaiwang 于 2013-9-2 09:20 编辑
import java.net.*;
public class Test
{
public static void main(String[] args) throws Exception
{
//通过DatagramSocket对象,创建UDP服务
DatagramSocket ds = new DatagramSocket();
//确定数据,并封装成数据包,DatagramPacket(byte[] buf,int length,InetAddress address,int port )
byte[] buf = "udp ge man lail e".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);
//通过socket服务,将已有数据包发送,通过send方法。
ds.send(dp);
//关闭资源
ds.close();
}
}
class UdpRece
{
public static void main(String[] args) throws Exception
{
//简历udp socket服务,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//定义数据包,用于储存数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//通过receive方法接收数据存入数据包
ds.receive(dp);
//通过数据包的方法获取其中数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(data);
System.out.println(ip+"::::"+port);
//关闭资源
ds.close();
}
}
复制代码
注意看下你自己本机的Ip地址,还有你的语句没有打印输出data 我帮你补上就OK了
作者:
第一印象
时间:
2013-9-2 09:27
本帖最后由 第一印象 于 2013-9-2 09:28 编辑
你的代码没问题,数据也能接收,你检查下IP地址写得对不对,还有一个,你接受的消息没有打印啊,你的接收端打印的是ip地址和端口地址,你把接收端的data打印一下就可以看到结果了,代码如下:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpRece {
/**
* @param args
*/
public static void main(String[] args) throws Exception
{
//简历udp socket服务,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//定义数据包,用于储存数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//通过receive方法接收数据存入数据包
ds.receive(dp);
//通过数据包的方法获取其中数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
//System.out.println(ip+"::::"+port);
//接收到的数据
System.out.println(data);
//关闭资源
ds.close();
}
}
复制代码
作者:
走遍世界找寻你
时间:
2013-9-2 11:18
第一印象 发表于 2013-9-2 09:27
你的代码没问题,数据也能接收,你检查下IP地址写得对不对,还有一个,你接受的消息没有打印啊,你的接收端 ...
太详细了谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2