2010-03-10 46 views
0

想要在我上学的时候测试UDPClient类。 我连接到学校的无线有一个严格的防火墙。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"); 
      } 
     } 

回答

4

您正在将数据发送到您的PC(127.0.0.1)。我认为这就是为什么你没有看到任何Wireshark的原因。

+0

没有地方像127.0.0.1 ;-) – 2010-03-10 20:57:18

+0

我不能发送UDP数据包给自己吗? – bobber205 2010-03-11 03:57:35

+0

这不是你不能发送,但Wireshark无法捕获,如回环流量。 – 2010-03-11 04:49:31