我在用到recv()这个函数时,里面的第二个参数是char型变量的,值的范围在-127到+127之间,
答案:4 悬赏:70 手机版
解决时间 2021-12-23 21:33
- 提问者网友:战皆罪
- 2021-12-23 09:50
如果我要装一个大于127的数据在里面怎么办??
最佳答案
- 五星知识达人网友:我住北渡口
- 2022-01-10 00:09
楼主你好。
既然参数是char类型,那么这个参数的大小就固定为1个字节,这一个字节能存储的数据只能有-128到+127。
除非你改变recv这个的第二个参数的类型,否则不可能输入大于127的数据,即使输入大于127的数据,也会被截取为一个字节的数据。
既然参数是char类型,那么这个参数的大小就固定为1个字节,这一个字节能存储的数据只能有-128到+127。
除非你改变recv这个的第二个参数的类型,否则不可能输入大于127的数据,即使输入大于127的数据,也会被截取为一个字节的数据。
全部回答
- 1楼网友:从此江山别
- 2022-01-10 01:57
m/m/
- 2楼网友:几近狂妄
- 2022-01-10 00:52
如果recv是自定义函数,可以改变char类型为int类型,这样既不妨碍你使用负数部分,也能兼容你现在的要求。
- 3楼网友:街头电车
- 2022-01-10 00:32
int recv( SOCKET s, char FAR *buf, int len, int flags );
不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。
该函数的第一个参数指定接收端套接字描述符;
第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;
第三个参数指明buf的长度;
第四个参数一般置0。
这里只描述同步Socket的recv函数的执行流程。当应用程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完毕,
如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR,如果s的发送缓冲中没有数据或者数据
被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区中没有数据或者协议正在接收数据,那么recv就一直
等待,直到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据copy到buf中(注意协议接收到的数据
可能大于buf的长度,所以在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据copy完。recv函数仅仅是copy数据,真正的
接收数据是协议来完成的),recv函数返回其实际copy的字节数。如果recv在copy时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。
注意:在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |