caoyuhangcqu 2020-08-11 12:14 采纳率: 0%
浏览 220

socket传输文件时传输一半就卡住了连接不到客户端了,麻烦各位大佬帮忙看一下

int client(const char *serveraddr, const char *portnum)
{
struct sockaddr_in serv_addr;
char buf[MAXLINE];
int sock_id;
int read_len;
int send_len;
FILE *fp;
int i_ret;
int i = 0;

while(1)
{
    char filepath[100];
    sprintf(filepath, "images/img_%d.jpg", i);
    if ((fp = fopen((const char *)filepath,"r")) == NULL)
    {
        perror("Open file failed\n");
        printf("%s\n", filepath);
        exit(0);
    }   

/*<-----------------------------------------socket---------------------------------------------->/
if ((sock_id = socket(AF_INET,SOCK_STREAM,0)) < 0) {
perror("Create socket failed\n");
exit(0);
}
/
<-----------------------------------------connect---------------------------------------------->*/
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(atoi(portnum));
inet_pton(AF_INET, serveraddr, &serv_addr.sin_addr);

    i_ret = connect(sock_id, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr));
    if (-1 == i_ret)
    {
        printf("Connect socket failed\n");
        return -1;
    }

/*<-------------------------------------client send part---------------------------------->*/
bzero(buf, MAXLINE);
while ((read_len = fread(buf, sizeof(char), MAXLINE, fp)) >0 )
{
send_len = send(sock_id, buf, read_len, 0);
if ( send_len < 0 )
{
perror("Send file failed\n");
exit(0);
}
bzero(buf, MAXLINE);
}

    printf("%s", filepath);
    printf(" SEND SUCCESSFUL\n");
    i ++;
    if (i >= 30)
        break;
}
fclose(fp);
close(sock_id);
return 0;

}

  • 写回答

1条回答 默认 最新

  • 那谁呀撒 2020-08-11 16:55
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退