tcplistener无法启动

时间:2011-10-17 15:11:06

标签: c# .net tcplistener

我在Windows窗体应用程序中使用TcpListener;它有一个“开始”按钮,可以启动TcpListener。但是,当我单击开始按钮时,将抛出以下异常:

  

请求的地址在其上下文中无效

这是我用来启动监听器的代码:

IPAddress FriendIp = IPAddress.Parse(IpAddress);
server = new TcpListener(FriendIp, PortNum);
server.Start();

这是异常的调用堆栈:

System.dll!System.Net.Sockets.Socket.DoBind(System.Net.EndPoint endPointSnapshot, System.Net.SocketAddress socketAddress) + 0x9f bytes  
System.dll!System.Net.Sockets.Socket.Bind(System.Net.EndPoint localEP) + 0xd2 bytes 
System.dll!System.Net.Sockets.TcpListener.Start(int backlog) + 0x91 bytes   
System.dll!System.Net.Sockets.TcpListener.Start() + 0xa bytes   
  

BlueBall.exe!BlueBall.Chat_Window.Chat_Window(string ipadd,int port,bool serverclientjob)第46行+ 0x10字节C#       BlueBall.exe!BlueBall.BlueBall.Main_ListBox_DoubleClick(object sender,System.EventArgs e)第221行+ 0x29字节C#       System.Windows.Forms.dll!System.Windows.Forms.Control.OnDoubleClick(System.EventArgs e)+ 0x7f bytes
      System.Windows.Forms.dll!System.Windows.Forms.ListBox.WndProc(ref System.Windows.Forms.Message m)+ 0x2c9 bytes       System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m)+ 0x13 bytes
      System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m)+ 0x31 bytes
      System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.DebuggableCallback(System.IntPtr hWnd,int msg,System.IntPtr wparam,System.IntPtr lparam)+ 0x64 bytes       [原产于管理过渡]
      [管理到原生过渡]
      System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(System.IntPtr dwComponentID,int reason,int pvLoopData)+ 0x287 bytes
      System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason,System.Windows.Forms.ApplicationContext context)+ 0x16c bytes
      System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason,System.Windows.Forms.ApplicationContext context)+ 0x61 bytes
      System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.Form mainForm)+ 0x31 bytes
      BlueBall.exe!BlueBall.Program.Main()第18行+ 0x1d字节C#       [原产于管理过渡]
      [管理到原生过渡]
      mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile,System.Security.Policy.Evidence assemblySecurity,string [] args)+ 0x6d bytes
      Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()+ 0x2a bytes
      mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(对象状态)+ 0x63字节
      mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext,System.Threading.ContextCallback callback,object state,bool ignoreSyncCtx)+ 0xb0 bytes
      mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext,System.Threading.ContextCallback callback,object state)+ 0x2c bytes
      mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()+ 0x44 bytes
      [原生于管理过渡]

1 个答案:

答案 0 :(得分:0)

Harold和Spender是正确的,TcpListener只能绑定到实例化它的机器上的本地IP地址。