Buổi sáng.Phát UDP trong Java
Tôi khá mới trong kết nối Java và ổ cắm nhưng tôi đang cố gắng gửi gói/phát UDP trên 255.255.255.255 trên cổng 8001 đến thiết bị. Tôi có thể nhận được dữ liệu để gửi tốt, tuy nhiên khi nói đến thời gian để nhận dữ liệu kết nối lần. Tôi có một gói sniffer và tôi có thể thấy gói gửi và sau đó thiết bị phản hồi.
Tôi khá chắc chắn đó là một sai lầm tân binh mà tôi đang thiếu trong mã của tôi nhưng tôi đã bị mắc kẹt trên nó một lúc và bất kỳ trợ giúp sẽ được đánh giá cao.
m_Socket = new DatagramSocket(m_SERVERPORT);
InetAddress address = InetAddress.getByName(m_SERVERIP);
m_DataPack = new DatagramPacket(m_SERVERCMD.getBytes(), m_SERVERCMD.getBytes().length,
address, m_SERVERPORT);
m_Socket.setBroadcast(true);
m_Socket.connect(address, m_SERVERPORT);
m_Socket.send(m_DataPack);
m_DataPack = new DatagramPacket(data, data.length,
address, m_SERVERPORT);
m_Socket.receive(m_DataPack); // This is where it times out
data = m_DataPack.getData();
String received = data.toString();
System.out.println("Received: " + received);
m_Socket.close();
Cảm ơn và Gig'Em.
EDIT:
Tôi không chắc chắn nếu điều này giúp nhưng khi tôi xem các đối tượng m_Socket tôi có thể thấy những điều sau đây ngay trước khi nó gửi:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
và đối tượng m_DataPack như sau:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;
Bạn nhận ra rằng Gig'Em của bạn xa lánh một số sinh viên tốt nghiệp của một trong những chương trình CS lớn hơn ở Mỹ, phải không? – jasonmp85
@ jasonmp85 cho những người không phải Texan, những người đang tự hỏi ý nghĩa của nó: https://en.wikipedia.org/wiki/Traditions_of_Texas_A%26M_University#Gig_.27em (vâng, tôi phải tìm kiếm nó;)) – Matthieu