私はこのSpringBootアプリケーションを作成し、Javaとのネットワーク通信をユーザーデータグラムプロトコルで調べました。私は、Web開発者、バージョンのためのEclipseのJava EE IDEでアプリケーションを実行しています:Oxygen.1aリリース(4.7.1a)ここでJava UDPサーバーが動作しません
メインクラス:ここ
@Override
public void run(String... args) throws Exception {
socket = new DatagramSocket(UDP_PORT);
byte[] receiveData = new byte[BUFFER_SIZE];
byte[] sendData = new byte[BUFFER_SIZE];
LOG.info("UDP server init...");
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
socket.receive(receivePacket);
String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
LOG.info("recived [" + sentence + "] from " + receivePacket.getAddress());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
DatagramPacket sendPacket = new DatagramPacket(receiveData, receiveData.length, IPAddress, receivePacket.getPort());
socket.send (sendPacket);
}
}
私がきたクライアントのUDPクラス私のコンピュータで
public class UDPClient {
private final static int TCP_PORT = 5202;
private DatagramSocket socket;
private InetAddress address;
private byte[] buf;
public UDPClient() throws SocketException, UnknownHostException {
socket = new DatagramSocket();
address = InetAddress.getByName("localhost");
}
public String sendEcho(String msg) throws IOException {
buf = msg.getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length, address, TCP_PORT);
socket.send(packet);
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
String received = new String(packet.getData(), 0, packet.getLength());
return received;
}
public void close() {
socket.close();
}
public static void main(String[] args) throws IOException, InterruptedException {
UDPClient udpClient = new UDPClient();
for (;;) {
TimeUnit.SECONDS.sleep(3);
System.out.println
(udpClient.sendEcho("cullons"));
}
}
}
Serverが正常に動作している、そして私は、サーバー上のUDPServerを展開テストするために作成され、私は
IPv4アドレスIPCONFIG使用してIPを得ました。 。 。 。 。 。 。 。 。 。 。 :214.146.86.201
"localhost"を "214.146.86.201"に置き換えていますが、サーバーにメッセージは表示されません。
私は結果と私のコンピュータ
からnc -vzu 214.146.86.201 5202
をやった:私はまたしてサーバーsocket = new DatagramSocket(UDP_PORT, InetAddress.getByName("214.146.86.201"));
にしようとした
MacBook-Pro-de-lopes:$ nc -vzu 214.146.86.201 5202
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif (null)
src 192.166.26.140 port 56827
dst 214.146.86.201 port 5202
rank info not available
Connection to 214.146.86.201 port 5202 [udp/*] succeeded!
しかし、サーバーのプリントヌル
LOG.info("socket InetAddres: " + socket.getInetAddress());
上と
LOG.info("socket RemoteSocketAddress: " + socket.getRemoteSocketAddress());
同じ結果