The UNIX and Linux Forums  


Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #3 (permalink)  
Old 07-18-2002
chenhao_no1 chenhao_no1 is offline
Registered User
  
 

Join Date: Jul 2002
Posts: 32
Client can connect() the Sleeping Server successful

1 . with regards to Perderabo and thanks to everyone who read the post
2 . I do a experiment :
Server call socket() bind() listern() in sequence , and call sleep(30) behind listen and before I call accept() .When the Server is in sleep ,the Client connect() the sleeping Server sucessful and send a lot of appointed data to the sleeping Server ,and then block because the recvive buffer of Server has been full(the Server is asleep)
3 . I refer to <<Unix Network Programming >> volume 1 (author : W.Richard Stevens) later .
I found that accept() only "return the next completed connection from the front of the completed connection queue) .the listen() function do "......... , Data that arrives after the three-way handshake completes,but before the server call accept(),should be queued by the server TCP,up to the size of connected socket's receive buffer"
4 . Then I think that : IN SERVER side , after we call listen() ,the Server application register an appointed socket to the kernel ,then the kernel will monitor the appointed port number and wait for the Client to connect .
Then another question arise :
5 . How does the kernel monitor the appointed port when the Server application do other thing(ie. call sleep() after listen() or not occupy the processor at that point) and
6 . How doese the kernel to notify which process that the data came if many Server application let the kernel to monitory different port