【发布时间】:2012-12-24 22:53:02
【问题描述】:
发生另一个 Vala 问题:我尝试通过 UDP 发送和接收数据。发送有效,通过 Wireshark 我可以看到服务器发送了预期的结果。问题是:我的程序没有得到数据。
我检查了一下,我可以看到,当创建一个套接字来发送 UDP 数据时,特定端口保持打开状态,Wireshark 确认了这一点,因为我的电脑没有将任何这些 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' 打印一次到控制台,然后循环。
如果我检查response.get_available(),它会返回 0。
我可以通过lsof | grep used_portnumber 进行检查,果然,使用的套接字保持打开状态。我做错了什么?
【问题讨论】: