Tôi đã thực hiện một chương trình để gửi một gói tin UDP từ một khách hàng đến một máy chủ ở đây là mã phátgửi và nhận gói UDP bằng Java?
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());
}
}
Các chức năng mã nhận là
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){
}
}
Tôi đã sử dụng chương trình Wireshark. Gói UDP được nhận trong chương trình WireShark ở đầu thu nhưng chương trình Java sẽ không nhận ra nó, chương trình chỉ tiếp tục nghe cổng và không có gì xảy ra?
Bạn có chắc chắn Server đang lắng nghe cổng bên phải? – elias
Trừ khi 'địa chỉ' là chính xác và' cổng' là 57 mã này sẽ chặn trong lệnh 'receive()' đầu tiên. – EJP
Không đại diện cho địa chỉ IP làm số âm. Thật lố bịch. Viết giá trị octet thực tế và sử dụng phôi. – EJP