2 qq 35998583 qq_35998583 于 2016.09.16 18:14 提问

小白求助...关于C语言socket传输失败的问题

刚刚C语言SOCKET入门,现在正在写一个简单的传输多文件的模块,但是发现服务器在send()的时候发生了问题,数据好像发送不出去(但是之前的send()都可以,就这个模块出来问题...),不知道是不是recv没有取数据导致了数据堆在发送栈上。
出问题的部分代码如下:
客户端:

     for(n=0;n<30;n++)
    {
        SOCKET file_sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
        while(connect(file_sock,(SOCKADDR *)&sockinfo,sizeof(SOCKADDR))!=0)
            continue;
        memcpy(path+big+2,all_province[n],strlen(all_province[n])+1);
        if((fp=fopen(path,"wb"))==NULL)
        {
            perror("无法正确创建省份文件..\n");
            closesocket(file_sock);
            WSACleanup();
            return -1;
        }
        while((lon=recv(file_sock,buf,250,0))>0)
            if(write(buf,1,lon,fp)<=0)
            {
                fclose(fp);
                closesocket(file_sock);
                break;
            }
        fclose(fp);
        closesocket(file_sock);
    }

服务器端:

         for(n=0;n<30;n++)
        {
            SOCKET file_sock=accept(servsock,NULL,NULL);
            memcpy(name+big+2,all_province[n],strlen(all_province[n])+1);
            if((fp=fopen(name,"rb"))==NULL)
            {
                closesocket(file_sock);
                perror("无法打开省份文件..\n");
                goto loop1;
            }
            fseek(fp,0,SEEK_SET);
            while((lon=fread(buf,1,250,fp))>0)
                if(send(file_sock,buf,lon,0)<=0)
                {
                    perror("链接发生错误..\n");
                    closesocket(file_sock);
                    fclose(fp);
                }
            shutdown(file_sock,SD_SEND);
            closesocket(file_sock);
            fclose(fp);
        }

1个回答

qq_35998583
qq_35998583   2016.09.16 18:15

各位大大帮帮忙...已经倒腾一下午了...

Csdn user default icon
上传中...
上传图片
插入图片