tcplistener не запускается

Я использую TcpListener в приложении Windows Forms; с кнопкой «Пуск», запускающей 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   

Гарольд и Спендер правы, TcpListener может связываться только с локальным IP-адресом на машине, на которой он создан.


person Jasim Khan Afridi    schedule 17.10.2011    source источник
comment
нет, это удаленный адрес, я перепроверил его.   -  person harold    schedule 17.10.2011
comment
Или, я могу сказать ... Это адрес виртуальной машины на моем ПК.   -  person Jasim Khan Afridi    schedule 17.10.2011
comment
Нет, вы должны передать локальный адрес слушателю для привязки. Подумайте об этом так: я не могу написать слушателя для привязки к конечной точке на вашем компьютере, только мой.   -  person Jasim Khan Afridi    schedule 17.10.2011
comment
@JasimKhanAfridi нет, я не имею в виду, что адрес, который вы передали, является локальным адресом, проблема в том, что он ожидает локального адреса, но вы даете ему удаленный адрес.   -  person spender    schedule 17.10.2011
comment
Ах хорошо. Спасибо за помощь ... Сейчас найду другой ПК для экспериментов ...   -  person harold    schedule 17.10.2011
comment
Ребят ребята, путаюсь. localaddress = MyIpaddress? Remoteaddress = otherPcIpaddress? правильно?   -  person Jasim Khan Afridi    schedule 17.10.2011
comment
Да, что-то в этом роде, локальный адрес - это IP-адрес, связанный с сетевой картой, которую вы хотите использовать для получения. Если вы установите его на IPAddress, будет использоваться любое разумное значение по умолчанию.   -  person Jasim Khan Afridi    schedule 17.10.2011
comment
@JasimKhanAfridi Я вижу, что на этот вопрос было приложено немало усилий; но если вы хотите избежать будущих голосов против, избегайте разговора по телефону - это действительно не приветствуется в этом сообществе. Незнание английского - это нормально, но плз - это не слово.   -  person harold    schedule 17.10.2011
comment
@downvoters, не могли бы вы объяснить отрицательный голос? Если вас не устраивает английский, команда StackOverflow любезно предоставила нам возможность редактирования.   -  person Jonathan Dickinson    schedule 17.10.2011
comment
BlueBall.exe! BlueBall.Chat_Window.Chat_Window (строка ipadd, int port, bool serverclientjob) Строка 46 + 0x10 байт C # BlueBall.exe! BlueBall.BlueBall.Main_ListBox_DoubleClick (отправитель объекта, System.EventArgs e) Строка 221 + 0x29 байт C # System .Windows.Forms.dll! System.Windows.Forms.Control.OnDoubleClick (System.EventArgs e) + 0x7f байт
System.Windows.Forms.dll! System.Windows.Forms.ListBox.WndProc (см. System.Windows .Forms.Message m) + 0x2c9 байтов System.Windows.Forms.dll! System.Windows.Forms.Control.ControlNativeWindow.OnMessage (ref System.Windows.Forms.Message m) + 0x13 байтов
System.Windows.Forms .dll! System.Windows.Forms.Control.ControlNativeWindow.WndProc (ref System.Windows.Forms.Message m) + 0x31 байт
System.Windows.Forms.dll! System.Windows.Forms.NativeWindow.DebuggableCallback (System .IntPtr hWnd, int msg, System.IntPtr wparam, System.IntPtr lparam) + 0x64 байта [переход от собственного к управляемому]
[от управляемого к собственному переходу ition]
System.Windows.Forms.dll! System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (System.IntPtr dwComponentID, int reason, int pvLoopData by) + 0x br> System.Windows.Forms.dll! System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (int причина, контекст System.Windows.Forms.ApplicationContext) + 0x16c байтов
System.Windows.Forms.dll! System. Windows.Forms.Application.ThreadContext.RunMessageLoop (int причина, контекст System.Windows.Forms.ApplicationContext) + 0x61 байт
System.Windows.Forms.dll! System.Windows.Forms.Application.Run (System.Windows. Forms.Form mainForm) + 0x31 байт
BlueBall.exe! BlueBall.Program.Main () Строка 18 + 0x1d байт C # [Переход от собственного к управляемому]
[От управляемого к собственному переходу]
mscorlib.dll! System.AppDomain.ExecuteAssembly (строка assemblyFile, System.Security.Policy.Evidence assemblySecurity, строка [] ar gs) + 0x6d байтов
Microsoft.VisualStudio.HostingProcess.Utilities.dll! Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () + 0x2a байтов
mscorlib.dll! System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта) + 0x63 байтов
mscorlib.dll! System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, обратного вызова System.Threading.ContextCallback, состояние объекта, bool ignoreSyncCtx) + 0xb0 байтов
mscorlib.dll! System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext ExecutionContext, обратный вызов System.Threading.ContextCallback, состояние объекта) + 0x2c байтов
mscorlib.dll! System.Threading.ThreadHelper.ThreadStart () + 0x44 байта
[Переход от собственного к управляемому]   -  person Jonathan Dickinson    schedule 17.10.2011


Ответы (1)


Адрес, переданный TcpListener, не является удаленным адресом, это локальный адрес.

person Parmenion    schedule 17.10.2011