C 中用于网络编程的 accept() 函数
accept() function in C for network programming
为什么 accept() 函数调用会初始化一个新套接字,而不是使用我们使用 socket() 函数调用创建的相同套接字。
我正在研究 TCP 客户端-服务器程序。
int welcomeSocket, newSocket;
welcomeSocket = socket(PF_INET, SOCK_STREAM, 0); //socket initialized..
// initializing different structure values..
bind(welcomeSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr));
listen(welcomeSocket,5);
/*---- Accept call creates a new socket for the incoming connection ----*/
addr_size = sizeof serverStorage;
newSocket = accept(welcomeSocket, (struct sockaddr *) &serverStorage,&addr_size);
send();
// why accept makes a new socket?????
因为您创建的原始套接字需要保留,所以您可以同时接受多个连接。
accept
返回的套接字不是您的 "listening socket",它是另一端连接了通信对等体的套接字。
为什么 accept() 函数调用会初始化一个新套接字,而不是使用我们使用 socket() 函数调用创建的相同套接字。 我正在研究 TCP 客户端-服务器程序。
int welcomeSocket, newSocket;
welcomeSocket = socket(PF_INET, SOCK_STREAM, 0); //socket initialized..
// initializing different structure values..
bind(welcomeSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr));
listen(welcomeSocket,5);
/*---- Accept call creates a new socket for the incoming connection ----*/
addr_size = sizeof serverStorage;
newSocket = accept(welcomeSocket, (struct sockaddr *) &serverStorage,&addr_size);
send();
// why accept makes a new socket?????
因为您创建的原始套接字需要保留,所以您可以同时接受多个连接。
accept
返回的套接字不是您的 "listening socket",它是另一端连接了通信对等体的套接字。