我用java程序UDP监听某个端口,运行的时候其他程序就不能监听这个端口了(端口被占用),如果先启动其他程序,java程序就收不到消息了。也试过socket.setReuseAddress(true);方法了。
请大家帮忙解决一下,谢谢!附上我的测试代码:
package com.chi.ws;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;public class UdpServer { /**
* @param args
*/
public static void main(String[] args) {
Thread thread = new Thread(new RunStartUdp());
thread.start();
}
/**
* 声明DatagramPacket对象
*/
private static DatagramPacket packet;
/**
* 声明DatagramSocket对象
*/
private static DatagramSocket socket;
private static byte recVBuf[];
private static class RunStartUdp implements Runnable{ @Override
public void run() {
// 创建接受方的udp端口以接收数据
recVBuf = new byte[500];
packet = new DatagramPacket(recVBuf, recVBuf.length);
try {
System.out.println("接收数据开始" );
socket = new DatagramSocket(null);
socket.setReuseAddress(true);
socket.bind(new InetSocketAddress(1130));
byte data[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(data, 1024); do {
String str;
socket.receive(packet);
str = new String(recVBuf, 0, packet.getLength());
System.out.println("接收数据 --> " + str);
} while (true);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}}JavaUDP
请大家帮忙解决一下,谢谢!附上我的测试代码:
package com.chi.ws;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;public class UdpServer { /**
* @param args
*/
public static void main(String[] args) {
Thread thread = new Thread(new RunStartUdp());
thread.start();
}
/**
* 声明DatagramPacket对象
*/
private static DatagramPacket packet;
/**
* 声明DatagramSocket对象
*/
private static DatagramSocket socket;
private static byte recVBuf[];
private static class RunStartUdp implements Runnable{ @Override
public void run() {
// 创建接受方的udp端口以接收数据
recVBuf = new byte[500];
packet = new DatagramPacket(recVBuf, recVBuf.length);
try {
System.out.println("接收数据开始" );
socket = new DatagramSocket(null);
socket.setReuseAddress(true);
socket.bind(new InetSocketAddress(1130));
byte data[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(data, 1024); do {
String str;
socket.receive(packet);
str = new String(recVBuf, 0, packet.getLength());
System.out.println("接收数据 --> " + str);
} while (true);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}}JavaUDP
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货