想在我上学的时候测试一下UDPClient课程。
我连接到学校的无线网络,它有严格的防火墙。
与此示例相比,此代码似乎相当可靠。(
http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx
)
但是当我打开Wireshark时,我看不到任何数据包(当我过滤UDP数据包或其他数据包时)。
我的代码有什么问题吗?我想学校的防火墙正在屏蔽它,但我不确定。
public static void CallBack(IAsyncResult result)
{
UdpClient myClient = result.AsyncState as UdpClient;
int sent = myClient.EndSend(result);
Console.WriteLine("Sent " + sent.ToString() + " bytes");
}
static void Main(string[] args)
{
UdpClient myClient = new UdpClient(57422);
try
{
myClient.Connect(IPAddress.Parse("127.0.0.1"), 57422);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
int b = 1;
b = IPAddress.HostToNetworkOrder(b);
string myName = "ALEX";
int lengthOfB = System.BitConverter.GetBytes(b).Length;
int lengthOfName = NUEncoder.GetByteCount(myName);
Byte[] intBytes = System.BitConverter.GetBytes(b);
Byte[] nameBytes = NUEncoder.GetBytes(myName);
Byte[] bytesToSend = new Byte[lengthOfB + lengthOfName];
int i = 0;
for (i = 0; i < lengthOfName; i++)
{
bytesToSend[i] = nameBytes[i];
}
for (int k = 0; k < lengthOfB; k++)
{
bytesToSend[i] = intBytes[k];
i++;
}
myClient.BeginSend(bytesToSend, bytesToSend.Length, CallBack, myClient);
Console.WriteLine("Sleeping...");
Thread.Sleep(50);
Console.WriteLine("Done");
}
}