2、 C/S程序、应用协议框架
阅读下面的程序,回答后面的问题。
Main(){
int sockfd,newsockfd;
if (sockfd=socket(…)<0) {
messagebox(“系统错误:Socket Error”);
return –1;
}
if (bind(sockfd,…)<0) {
messagebox(“系统错误:Bind Error”);
return –1;
}
if (listen(socket,5)<0) {
messagbox(“系统错误:Listen Error”);
return –1;
}for(;;) {
newsockfd=accept(sockfd,…);
if (newsockfd<0) {
messagebox (“Accept Error”);
close(sockfd);
return –1;
}
server(newsockfd);
}
}int server(int msockfd) {
}
(1)该程序建立的是C/S模型中客户和服务器中的哪一个?
(2)该程序运行到哪个语句时阻塞?怎么样才能解开阻塞?
(3)简述该程序的功能及工作原理

解决方案 »

  1.   

    1,服务端,因为有bind 和listen
    2,accept,接收到请求就解开了
    3,服务端侦听,然后接收客户请求
      

  2.   

    1:服务端。有bind和listen
    2:newsockfd=accept(sockfd,…);直到有客户接入才解开
    3:
    sockfd=socket(…);//建立socket
    bind(sockfd,…);//绑定地址
    listen(socket,5);//队列长为5
    newsockfd=accept(sockfd,…);接收请求
      

  3.   

    2.closesocket一样可以,断开连接也一样会
      

  4.   

    服务器端
    阻塞在newsockfd=accept(sockfd,…);这句,接收到client连接阻塞解开,或关闭socket也可以。
    绑定一个端口进行侦听,接收到连接进行处理