发生了另一个 Vala 问题:我尝试通过 UDP 发送和接收数据。发送有效,通过 Wireshark 我可以看到服务器发送了预期的结果。问题是:我的程序没有得到数据。
我检查了一下,我可以看到,当创建了一个套接字来发送 UDP 数据时,特定端口保持打开状态,Wireshark 确认了这一点,因为我的 PC 没有将任何这些 ICMP 消息发送回服务器。
到目前为止我得到了什么:
try
{
SocketClient mySocket = new SocketClient();
mySocket.protocol = SocketProtocol.UDP;
mySocket.type = SocketType.DATAGRAM;
var conn = mySocket.connect (new InetSocketAddress(addr,targetPort));
conn.output_stream.write(themessage_in_a_uint8_array);
DataInputStream response = new DataInputStream (conn.input_stream);
string resp ="";
char myChar;
try
{
do
{
myChar = (char)response.read_byte();
print ("Response" + myChar.to_string());
}while(true);
}
catch(Error e)
{
print(e.message);
}
}
catch(Error e)
{print(e.message);}
当前发生的情况:消息被发送,字符串“响应”被打印到控制台一次,然后它只是循环。
如果我检查response.get_available()
它返回0。
我可以检查lsof | grep used_portnumber
并确定,使用的套接字保持打开状态。我究竟做错了什么?