は、送信機コードJavaを使用してUDPパケットを送受信しますか?
import java.io.IOException;
import java.net.*;
/**
*
* @author hp
*/
public class JavaApplication9 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws UnknownHostException, SocketException, IOException {
// TODO code application logic here
byte[] buffer = {10,23,12,31,43,32,24};
byte [] IP={-64,-88,1,106};
InetAddress address = InetAddress.getByAddress(IP);
DatagramPacket packet = new DatagramPacket(
buffer, buffer.length, address, 57
);
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.send(packet);
System.out.println(InetAddress.getLocalHost().getHostAddress());
}
}
受信コード機能は、私はWireSharkのプログラムを使用していた
public void run(){
try{
DatagramSocket serverSocket = new DatagramSocket(port);
byte[] receiveData = new byte[8];
byte[] sendData = new byte[8];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
System.out.println("RECEIVED: " + sentence);
InetAddress IPAddress = receivePacket.getAddress();
String sendString = "polo";
sendData = sendString.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}catch (Exception e){
}
}
です。 UDPパケットは受信者のWireSharkプログラムで受信されますが、Javaプログラムはそれを認識せず、プログラムはポートをリッスンして何も起こりません。
あなたはサーバーが右のポートをリッスンしていますか? – elias
'address'が正しくなければ、' port'は57で、このコードは最初の 'receive()'呼び出しでブロックされます。 – EJP
IPアドレスを負の数で表現しないでください。バカバカしい。実際のオクテット値を書き、キャストを使用します。 – EJP