我在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
[原生于管理过渡]
答案 0 :(得分:0)
Harold和Spender是正确的,TcpListener只能绑定到实例化它的机器上的本地IP地址。