是否最少有两台电脑才可工作,一台作服务器,另一台作客户端,只用一台能行吗?

解决方案 »

  1.   

    还有一个方法
    上网后链接自己的ip就ok
      

  2.   

    可以。
    只是MFC中CAsyncSocket的封装不好,把端口共享给封掉了,这样server和client不能用同一端口,需要把CAsyncSocket改写一下。
      

  3.   

    对CAsyncSocket如何改写?我初学,请详示。
      

  4.   

    BOOL CAsyncSocket::Create(UINT nSocketPort, int nSocketType,
    long lEvent, LPCTSTR lpszSocketAddress)
    {
    if (Socket(nSocketType, lEvent))
    {
    //在Bind之前,做复用
    BOOL bReuseAddress = TRUE;
             SetSockOpt(SO_REUSEADDR, (void*)&bReuseAddress, sizeof(BOOL), SOL_SOCKET);                  if (Bind(nSocketPort,lpszSocketAddress))
    return TRUE;
    int nResult = GetLastError();
    Close();
    WSASetLastError(nResult);
    }
    return FALSE;
    }具体实现忘了,很久以前用过,查一下,如果Create是虚函数,可以覆盖。
    不是的话,继承一个类,写一个函数(如myCreate),沾以上代码,不要用
    原来的Create
      

  5.   

    你用UDP的话,一个端口只能有一个套接字,
    使用TCP的话,一个端口可以有好几个套接字而且你服务器端和客户机端可以选用不同的端口。
      

  6.   

    把自己的computer当作是server吧,我编socket就用这样测试,不过如果测试过了,再拿到不同的computer上进行测试,因为这两种方法的数据传输速度是不一样的,如果是编远程,那最好与不同的ip段进行测试。比如lab与ppp等
      

  7.   

    最好是重新做一个CSocket,你可以到http://www.cs.technion.ac.il/Courses/Computer-Networks-Lab/projects/summer2001/dist/final_report/source.htm
    下载,有说明,感觉比直接用winsock好的多。