Создание программы, которая может передавать встроенные строки между двумя компьютерами.VB Socket Exception Issue - Порты
После рытья и изменения синтаксиса, я, наконец, смог увидеть этот сокет исключение:
System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.TcpListener.Start(Int32 backlog)
at System.Net.Sockets.TcpListener.Start()
at ChatProgFinal.chatForm.serverMode()
порт, который я использую 11337. По NetStat, я не использую этот порт, поэтому я не уверен, как иначе я мог бы избавиться от этого исключения.
Вот мой serverMode блок:
Public Sub serverMode()
Try
Dim server As TcpListener = Nothing
server = New TcpListener(LocalIPEndPointAnyIP)
server.Start()
Dim incomingClient As TcpClient = server.AcceptTcpClient()
Do While isAlive = True And incomingClient.Connected = True
stream = incomingClient.GetStream()
If stream.CanRead Then
RaiseEvent DataReceived(stream)
End If
If incomingClient.Connected = False Then
RaiseEvent statusCheck("Disconnected")
isAlive = False
server.Stop()
End If
Loop
Catch e As Exception
RaiseEvent statusCheck(e.ToString)
Using outfile As New StreamWriter(docPath + "\log.txt")
outfile.Write(e.ToString)
End Using
Finally
stream.Close()
End Try
End Sub
Спасибо за любые советы вы можете предоставить по этому вопросу. Боковой вопрос: я не уверен, как тестировать/отлаживать программное обеспечение, которое обменивается данными между двумя компьютерами через Visual Studio 2010. Что я сейчас делаю, это опубликовать его и развернуть на тестовую виртуальную машину. У кого-нибудь есть другие методы, которые я мог бы использовать?
Только один разъем * может прослушивать определенный номер порта в любом процессе на машине. Поэтому простые объяснения состоят в том, что по какой-то причине вы можете вызывать метод serverMode() более одного раза. Или вы запускаете свою программу более одного раза. Начните с установки точки останова при вызове метода Start() и убедитесь, что он только разрывается один раз. –
@ Hans Passant, я провел несколько тестов с тех пор, как вы в последний раз помогали с этим вопросом. Надеюсь, вы все равно сможете помочь. По моим точкам разрыва блок кода для сервера появляется только один раз. Кроме того, я рассмотрел возможность закрытия порта на моей основной машине, поэтому вместо этого я развернул его на отдельный ноутбук. Те же результаты без брандмауэра. В моих журналах это означает, что «соединение не может быть сделано, потому что целевое устройство активно отказалось от него», которое я получал. Попробовал несколько решений там (Измененные порты и т. Д.) Еще раз спасибо, если вы можете помочь. Я отправлю полный вопрос, если мне нужно – Gith
Это совершенно другое исключение из того, о котором вы задали свой вопрос. Трудно представить, как вы считаете эти «те же результаты». «Активно отказано», как правило, является проблемой межсетевого экрана. Попросите администратора вашей локальной сети помочь вам. –