Что у меня есть:
- У меня есть две клиентские программы для сокетов, написанные на C #.
- У меня есть одна программа сервера сокетов (не написанная мной, но она работает) на Python.
Проблема:
Первый клиент сокетов c #, который я написал, работает нормально и может взаимодействовать с клиентом сервера Python. Я могу отправить данные без проблем. Однако я хотел переписать код, чтобы сделать его более объектно-ориентированным, поэтому я сделал вторую программу, аналогичную первой, с точки зрения того, что сделано.
Проблема в том, что второй не подключится, говоря это:
System.Net.Sockets.SocketException: была сделана попытка получить доступ к сокету запрещенным способом с помощью его прав доступа.
Я погуглил это и понял, что соединение с первым соединением не было полностью несвязанным.
Когда я сделал netstat -a
, я действительно увидел соединение, и в конце он сказал TIME_WAIT.
Вопрос в том, как мне его отменить? Это на C # / клиентской стороне?
К вашему сведению, я уже пытался закрыть / отключить / выключить сокет, но ничего из этого не получилось. Я также вставил в эту команду
connection.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
при создании соединения с сокетом, но это тоже не сработало.
Должен ли я что-то делать на стороне сервера, чтобы разорвать соединение?