网络通讯用CSocket编程实现。当用TCP时,需要一台机器充当服务器,对某个端口进行监听,并等待连接请求。我看到这样的程序代码, 有点不明白。m_srvrSocket.Create  //m_srvrSocket是 CMyServerSocket 对象.继承自 CSocket
 (UserPort,SOCK_STREAM,FD_ACCEPT);//创建流套接字, 并在UserPort上进行监听。m_srvrSocket。Listen(1)//等待连接请求。并且作者还对一个虚函数CMyServerSocket::OnAccept进行重载。当有Client端程序与服务端连接时, 服务端是如何工作的, 它调用的函数次序如何。 

解决方案 »

  1.   

    再详细说一下。当m_srvrSocket.Listen()开始调用, 如果那一时刻没有程序连接到服务器端, Listen是立刻返回呢, 还是继续等待直到一个Client端与服务器端连接,如果是第二种情况, 会不会引起程序的阻塞。
    当一个CLient端与服务器端连接上了, m_srvrSocket还会不会继续自动监听, 是否还需要重新调用Listen().在这里先谢谢高手们。
      

  2.   

    继续等待直到一个Client端与服务器端连接
    no
      

  3.   

    当有人连接时,你应该把他转到另一个CSocket,它将继续侦听
      

  4.   

    好吧!我来现学现卖了,先说明我看的是Windows API函数。
    对于服务器,先建立一个套接字,,然后调用bind函数使这个套接字绑定到具体的本地IP接口和端口上,然后调用listen对这个端口进物监听,等待客户的连接,在收到客户机连接之后,调用accept函数接受连接,这个函数会建立一个新的套接字,它对应于己经接受的那个客户机连接,对于该客户机后续的操作,都应使用这个套接字,至于原来的那个监听套接字,它仍然用于接受其他的客户连接而且还处于监听的模式。
    对于客户机,
    简单一些(与服务器相比),客户机建立一个套接字,并对投入应用的服务器名进行解析,然后与服务器建立连接(调用connect函数),连接一旦成功,就可发送大量的消息了(调用send),每次发送数据之后,客户机都会等待服务器发回的回应(调用recv)吧,
    我是昨天看的书,今天还不至于忘记吧!
    具体的内容,请楼主查资料吧!我也打算面向网络编程呢!