我是一个初学者,写了一个程序,目的是让A、B两台机器之间可通过socket互相传递文件。A:
sock = CreateSocket();
SendFile(sock);
ReceiveReport(sock);B:
sock = CreateSocket();
ReceiveFile(sock);
SendReport(sock);但是有问题:  就是A发送文件成功,然后卡死,将A程序关闭,这时B接收文件才成功,并B发送文件成功。但是A只建立文件,文件中没内容。我在想是不是,A传文件给B,**,然后B再传文件给A。请教其中的**,应该是个什么样的操作?
是不是涉及到同步异步、或者阻塞的问题。有劳大家指点,多谢!

解决方案 »

  1.   

    缺的东西太多了。首先,你如何判断何时不再recv?
      

  2.   

    我找到原因了,是receive函数出了问题。
    while(true)
    {
        read=recv(client,recvbuf,1024,0);
        if(read==-1) break;
        bRet=WriteFile(hFile,recvbuf,read,&dwWrite,NULL);
    }
    结果缓冲区读完后,停在read=recv(client,recvbuf,1024,0);这里卡住了。
    后来我加了一条if语句,变成这样就好了。
    while(true)
    {
        read=recv(client,recvbuf,1024,0);
        if(read==-1) break;
        bRet=WriteFile(hFile,recvbuf,read,&dwWrite,NULL);
        if (read<1024) break;
    }