这是服务器端的一段语句,不知道这个for的空循环用来干什么,是不是用来多次发送,接收,另外想问问,发送接收时,默认情况下,有超时吗
for(;;)
{
if(send_str(sock,"OK")<=0||recv_str(sock,g_buf,sizeof(g_buf))<=0)
{
printf("%s error or disconnected,socket is closing...\n",prompt);
close(sock);
return 0;
}
printf("%s>%s\n",prompt,g_buf);
}
}
关于socket编程中的for(;;)有什么作用呢
答案:3 悬赏:0 手机版
解决时间 2021-03-15 12:58
- 提问者网友:山高云阔
- 2021-03-14 19:46
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-03-14 20:50
意思是一直发送。直到发送不成功
看见那个if(send_str(sock,"OK")<=0||recv_str(sock,g_buf,sizeof(g_buf))<=0)没。也就是说如果发送成功就接收,如果接收成功就重新来一遍,直到发送或者接收失败。
这很有可能使用程序死在那。你说的超时,要看你的是同步还是异步,如果同步用超时一说,如果是异步就只能主动查看数据是否到来。
有没有超时就要看是套接字是同步还是异步的,同步的有(时间是无限长,相当于阻塞),可以设置超时间。异步的没有
看见那个if(send_str(sock,"OK")<=0||recv_str(sock,g_buf,sizeof(g_buf))<=0)没。也就是说如果发送成功就接收,如果接收成功就重新来一遍,直到发送或者接收失败。
这很有可能使用程序死在那。你说的超时,要看你的是同步还是异步,如果同步用超时一说,如果是异步就只能主动查看数据是否到来。
有没有超时就要看是套接字是同步还是异步的,同步的有(时间是无限长,相当于阻塞),可以设置超时间。异步的没有
全部回答
- 1楼网友:一秋
- 2021-03-14 23:47
原型是extern void *memset(void *buffer, int c, int count)
buffer为指针或是数组,c是赋给buffer的值,count是buffer的长度.
这个函数在socket中多用于清空数组.
如:原型是memset(buffer, 0, sizeof(buffer))
- 2楼网友:woshuo
- 2021-03-14 22:24
是用来重复发送和接收数据,send和recv的返回值是发送或接收的字节数,如果失败,返回值<=0,就关闭socket
有超时的,多久忘了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯