7

我继承了一些调用的 TCP 代码:

bind(tcpSocket, (struct sockaddr*)&server_addr, sizeof(server_addr));

在致电之前

setsockopt(tcpSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));

毫不奇怪,这会导致消息:“地址已在使用中”。只需交换调用顺序即可解决问题。

这就提出了一个问题:一般来说,是否应该在调用 tosetsockopt()之前进行任何调用bind()?打电话之前connect()

4

1 回答 1

8

SO_REUSEADDR之前需要设置bind()。但是,并非所有选项都需要在 之前bind()甚至之前设置connect()。这实际上取决于设置的特定选项,因此您必须逐个选项地处理它们。

于 2014-09-19T22:48:00.020 回答