2015-11-24 2 views
0

Почему функция accept() вызывает инициализацию нового сокета вместо использования того же сокета, который мы создали с помощью вызова функции socket(). Я работаю над программой клиент-сервер TCP.Функция accept() в C для сетевого программирования

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????? 
+0

См. Это http://beej.us/guide/bgnet/output/html/multipage/syscalls.html#accept – Izuel

ответ

2

Поскольку оригинальный сокет, который вы создали, должен оставаться поблизости, поэтому вы можете принимать несколько одновременных соединений.

Розетка, возвращаемая accept, не является вашим «слуховым гнездом», это разъем, который на другом конце соединяет одноранговое соединение.

Смежные вопросы