55问答网
所有问题
Linux中C语言的一个函数的源代码:socket 编程中的 recv() 函数。
如题所述
举报该问题
其他回答
第1个回答 2019-04-02
1、recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态。
2、recv函数只是在用户空间定义的。内核空间有与之对应的函数,也就是说,执行recv函数就会调用到内核中与它对应的函数,实际起作用的就是内核里的这个函数。至于内核里调用的是那个函数,内核里的调用关系复杂的很,除非对内核非常了解的,才会找到到底是怎么调用的,他也是只是找到怎么调用的。
相似回答
linux
C语言编程
,
socket
实现
的
即使通讯系统
答:
Socket
通信创建步骤:(1)通过
socket()函数
创建socket(2)通过bind函数绑定socket于设备地址(3)进行读写操作read/
recv
/recvfrom write/send/sendto(4)close方法关闭套接字 例子如下:test
1
.c include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <netinet/in.h> #in...
recv()的
注释
答:
对于数据报类套接口,队列中第一个数据报中的数据被解包,但最多不超过缓冲区的大小。如果数据报大于缓冲区,那么缓冲区中只有数据报的前面部分,其他的数据都丢失了,并且
recv()函数
返回WSAEMSGSIZE错误。如果没有数据待读,那么除非是非阻塞模式,不然的话套接口将一直等待数据的到来,此时将返回
SOCKET
...
send
Linux
C
函数
答:
在
Linux中
,
socket编程中
涉及到消息传输的几个关键函数包括sendto, sendmsg,
recv
, recvfrom,和recvmsg,它们都在<sys/socket.h>头文件中定义。其中,函数ssize_t send(int s, const void *msg, size_t len, int flags);的作用是向对方主机发送数据。第一个参数 s 是发送端的套接字描述符,它...
linux中的socket编程
的问题,
recv函数
收到的全是0
答:
send后,操作系统会决定是不是马山发包还是继续等待看看还有别的send,然后把他们一起打成一个包来发送。所以你
recv
是不知道要接收几个包的。
linux
下调用
recv函数
,死循环在recv函数里面,什么原因?
答:
并不会出现EAGAIN。建议你还是多用strace来查询问题所在,有时候比gdb更能直接找出原因。、还有再纠正一点,
recv
是
一个linux
系统调用,要么是阻塞要么是返回,不存在死循环的问题的, 死循环肯定是出在你的程序
代码中
。 如果你觉得recv本身不退出又占用大量cpu,那就是linux库出bug或者是内核bug了。
大家正在搜
c语言代码大全源码
c语言函数的定义与调用
c语言fun函数
有趣的c语言代码
C语言函数
c语言函数类型
c语言怎么调用函数
自定义函数c语言
c语言子函数