別の Vala 問題が発生しました。UDP 経由でデータを送受信しようとしています。送信が機能し、Wireshark を介して、サーバーが期待される結果を送信していることがわかります。問題は次のとおりです。私のプログラムはデータを取得しません。
確認したところ、UDP データを送信するためのソケットが作成されている場合、特定のポートが開いたままになっていることがわかります。これは、PC がこれらの ICMP メッセージをサーバーに送信しないため、Wireshark によって確認されます。
私がこれまでに得たもの:
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' がコンソールに 1 回出力され、その後ループします。
私がチェックするresponse.get_available()
と、0が返されます。
確認できlsof | grep used_portnumber
ますが、確かに、使用済みのソケットは開いたままです。私は何を間違っていますか?