兄弟我刚接触网络编程,只是写过一些锁定状态下的C/S小程序,现在正在看完成端口这一块,感觉不好理解。现在对于做一个完成端口的程序没有什么思想。大伙可否给我发一个简单一点的完成端口的例子,参考一下。另外,能把大家做完成端口程序的过程给我讲一下吗?多多谢!!!!!!

解决方案 »

  1.   

    http://www.csdn.net/develop/Article/15/15211.shtm
      

  2.   

    各位朋友:
    我看了〈windows网络编程〉里的例子,然后写了一个client端做测试,发现有一些问题。问题如下:
    (1)启动书里那个server例子,运行client端,server端显示:
    Socket number 104 connected
    WSARecv() failed with error 10054
    client端得到希望得到的结果。
    (2)启动server,单步跟踪client端程序,得到相应的结果后,结束程序,在server端得到的结果是:
    Socket number 104 connected
    GetQueuedCompletionStatus failed with error 64
    (3)启动server,单步跟踪多个client,只要不关闭client,server端就没问题。
    完成端口怎么处理客户端中断连接的问题,你们碰到上面的问题怎么处理?又请教你们了。
    client端的代码如下:
    #include <stdio.h>
    #include <winsock.h>
    #define bzero(p, l) memset(p, 0, l)
    #define SERVER "127.0.0.1"
    #define PORT 5150
    int main( )
    {
    int sockfd,n;
    struct sockaddr_in ser_addr;
    char sends[] = {"hello world!"};
    char recvs[1024];

    WSADATA wsadata; 
    WSAStartup(MAKEWORD(2,2), &wsadata); 
        
    memset(&ser_addr,0,sizeof(ser_addr));
    ser_addr.sin_family = AF_INET;
    ser_addr.sin_addr.s_addr = inet_addr(SERVER);
    ser_addr.sin_port = htons(PORT);
    sockfd=socket(AF_INET,SOCK_STREAM,0);

    if (sockfd<0) { 
    printf("0x%x:%d error\n",ntohl(ser_addr.sin_addr.s_addr),ntohs(ser_addr.sin_port));
    exit(1);
    }

    if(connect(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))<0){
    printf("connect error\n");
    exit(1);
    }

    printf("connected\n");
    if(send(sockfd,sends,strlen(sends),0)<0){
    printf("Send error!\n");
    exit(0);
    }
    printf("Send ok!\n");
     
    if((n=recv(sockfd,recvs,1024,0))==0) {
    printf("read error!\n");
    }
    recvs[n]=0;
    printf("read ok!\n %s\n",recvs);
      printf("read ok!\n %s\n",recvs);

    // WSACleanup();
    }
    那本书上的例子你们都看过吧,我就不在写了,你们快来看看吧,怎么办?
      

  3.   

    to:小辉
    客户端一执行完就退出了,所以链接就断开,我明白。我的问题是难道服务器端就不能处理客户端异常断开的问题?服务器应该对应多个客户端,总不能有一个异常断开后就不能处理别的请求了吧。如果能处理,应该怎么办?对了,以前看过您的帖子,知道您曾经做过完成端口的程序,正好我现在想做一个网吧管理的程序,服务器端就想采用完成端口技术,能不能把源码发过来给俺参考一下。多多谢!!!
    [email protected]
    to:山野白菜
    在这里发一个链接吧!
      

  4.   

    FTP出问题了,已经给你发过去了
      

  5.   

    我做的是双线通讯:两个dll,两个调试应用程序,双线通讯(两条线连接)
    也是参照http://www.codeproject.com/internet/winsockiocp.asp做的。
      

  6.   

    to 山野白菜
    没收到啊,麻烦你试一下另一个邮箱,[email protected]
    to 小辉
    双线通讯,我这里可能没有测试环境,不过你把你写的代码给我发过来,我看一下你那里用到完成端口的部分是怎么做的就可以了。
      

  7.   

    见http://expert.csdn.net/Expert/TopicView1.asp?id=1184989