делает его коротким:
сервер (192.168.0.78) прослушивает 8013
клиент (10.0.2.15) пытается подключиться к серверу, получить его локальный порт (eg.54591), как повторно использовать набранный порт TCP
Как заставить клиента закрыть соединение и повторное использование 54591?
я попробовал и получил:
1. закрыть соединение непосредственно и слушать один и тот же порт: не может повторно использовать порт
2. Запуск другой программы (B) для подключения сервера и выхода, а затем пытался слушать порт B использовал: неизвестный порт
есть ли правильный способ сделать это?
код прост:
клиент
func main() {
conn, err := net.Dial("tcp" , "192.168.0.78:8013")
if err != nil {
panic(err)
}
localAddr := conn.LocalAddr().String()
conn.Close()
// i got the local port, what to do?
fmt.Println(localAddr)
}
сервер
func main(){
ln, err := net.Listen("tcp", ":8013")
if err != nil {
panic(err)
}
for i := 0; i < 5; i++ {
conn, err := ln.Accept()
if err != nil {
panic(err)
}
fmt.Println(conn.RemoteAddr().String(), "connected")
conn.Close()
}
}
Я проверил ваш код, но «закрыть соединение непосредственно и слушать один и тот же порт» было нормально. Произошла ошибка. – Ggicci
Почему? Что вас беспокоит, что такое локальный порт клиентов? – EJP
Я получил это: panic: listen tcp 10.0.2.15:54613: bind: адрес уже используется @Ggicci – user2986683