JAVA UDP编程

harris1994 2015-11-14 10:34:17
UDP编程
public class MyServer {
public static void main(String[] args) throws IOException {
//1、创建服务端 + 端口
DatagramSocket server = new DatagramSocket(8888);
// 2、准备接收容器
byte[] container = new byte[1024];
// 3、封装成包 DatagramPacket(byte[] buf, int length)
DatagramPacket packet = new DatagramPacket(container, container.length);
// 4、接收数据
server.receive(packet);
// 5、分析数据
byte[] data = packet.getData();
int len = packet.getLength();
System.out.println(new String(data, 0, len));
// 6、释放
server.close();

}
}
public class MyClient {
public static void main(String[] args) throws IOException {
// 1、创建服务端 + 端口
DatagramSocket client = new DatagramSocket(6666);
// 2、准备数据
String msg = "udp编程";
byte[] data = msg.getBytes();
// 3、打包(发送的地点和端口)

DatagramPacket packet = new DatagramPacket(data, data.length,
new InetSocketAddress("127.0.0.1", 8888));
// 4、发送
client.send(packet);
// 5、释放
client.close();
}
}
这个不管我用localhost还是127.0.0.1,服务端都接收不到数据。
我是新手,真心求解
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingfudeshi 2015-11-15
  • 打赏
  • 举报
回复
udp接收消息是不会自己阻塞的,所以你要弄个循环,让服务器一直检测消息,然后再运行客户端,发送消息,服务端就可以收到了,如果消息内容为stop,则udp服务器停止.
xingfudeshi 2015-11-15
  • 打赏
  • 举报
回复
不好意思,刚才没看清楚你的问题,我帮你改了一下,你试试 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import test.server; public class MyServer { public static void main(String[] args) throws IOException { try { // 1、创建服务端 + 端口 DatagramSocket server = new DatagramSocket(8888); boolean flag=true; while(flag){ // 2、准备接收容器 byte[] container = new byte[1024]; // 3、封装成包 DatagramPacket(byte[] buf, int length) DatagramPacket packet = new DatagramPacket(container, container.length); // 4、接收数据 server.receive(packet); // 5、分析数据 byte[] data = packet.getData(); int len = packet.getLength(); String msg=new String(data,0,len); System.out.println(new String(data, 0, len)); if(msg!=null&&msg.equals("stop")){ flag=false; } } // 6、释放 if(!flag){ server.close(); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress; public class MyClient { public static void main(String[] args) throws IOException { // 1、创建服务端 + 端口 DatagramSocket client = new DatagramSocket(); // 2、准备数据 String msg = "udp编程"; byte[] data = msg.getBytes(); // 3、打包(发送的地点和端口) DatagramPacket packet = new DatagramPacket(data, data.length, new InetSocketAddress("127.0.0.1", 8888)); // 4、发送 client.send(packet); // 5、释放 client.close(); } }
xingfudeshi 2015-11-15
  • 打赏
  • 举报
回复
DatagramSocket client = new DatagramSocket(6666); 这个端口改成和服务器一样的端口就行
harris1994 2015-11-15
  • 打赏
  • 举报
回复
求解啊啊啊,谢谢各位亲

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧