【发布时间】:2016-07-08 03:41:42
【问题描述】:
根据 POSIX,当一个进程 accept()s 连接到 listen()ing socket() L1,然后是 close()s L1,并创建一个新的 socket()L2 绑定在同一接口/地址/端口,listen()s 和accept()s 新连接,从前一个监听套接字 L1 接受的套接字是否会像 L1 没有关闭一样正常运行?或者首先以这种方式创建和启动套接字 L2 是不可能的?请提供参考。
例子:
int server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(server, &someAddress, sizeof(someAddress)))
listen(server, 0);
int conn_1 = accept(server, NULL, NULL);
/* ... */
int conn_n = accept(server, NULL, NULL);
/* RESTART LISTENING SOCKET: */
close(server);
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(server, &someAddress, sizeof(someAddress)))
listen(server, 0);
int newconn_1 = accept(server, NULL, NULL);
/* ... */
int newconn_n = accept(server, NULL, NULL);
/* Will connections conn_1...conn_n still properly operate at this point?
【问题讨论】:
-
您需要添加一些代码来说明您的观点。我不明白你在问什么。
-
@SergeyA 我现在添加的例子怎么样?