永发信息网

send(clientsocket,(char*)&b,sizeof(b),0)<0中的0和<0在C语言中如何理解?

答案:2  悬赏:70  手机版
解决时间 2021-02-25 10:17
  • 提问者网友:寂寞撕碎了回忆
  • 2021-02-25 01:31
send(clientsocket,(char*)&b,sizeof(b),0)<0中的0和<0在C语言中如何理解?
最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-02-25 03:03
你问的是两个问题
第一个问题,send函数中第4个参数的含义,send函数原型
int PASCAL FAR send( SOCKET s, const char FAR* buf, int len, int
flags);
s:一个用于标识已连接套接口的描述字。
buf:包含待发送数据的缓冲区。
len:缓冲区中数据的长度。
flags:调用执行方式。
flags可以为0、MSG_DONTROUTE或者MSG_OOB
0 :表示无特殊行为
MSG_DONTROUTE :指明数据不选径,一个WINDOWS套接口供应商可以忽略此标志
MSG_OOB : 发送带外数据(仅适用于SO_STREAM)

第二个问题,send函数返回值
因为send函数发送失败时返回SOCKET_ERROR
SOCKET_ERROR宏定义为#define SOCKET_ERROR (-1)
所以该语句是判断发送是否失败。
全部回答
  • 1楼网友:空山清雨
  • 2021-02-25 03:43
最后那个参数0代表flag也就是控制send行为的一些参数,好像并没有用到,一般使用0也就是默认,这个参数不重要。
send函数copy数据成功,就返回实际copy的字节数,如果send在copy数据时出现错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send函数也返回SOCKET_ERROR。SOCKET_ERROR应该是个负数,所以这个<0代表了判断send是否执行成功
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯