wow泰坦之血任务:关于使用socket套接字的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 07:56:10
关于recvfrom与sendto的搭配使用,小弟有些不清楚,请高手帮帮我:

sendto是发送,这个好理解,而recvfrom则有疑问了,该函数是用来接收的,但该函数没有提供任何的延时或

等待的时间参数,这是不是说该函数就是直接去套接字中取数据,如果当时数据还没有送到的话,就把缓冲区

中的数据强行读出来,没有任何等待的过程?调用该函数的进程是不会进入到阻塞状态的吗?

这里我想结合TCP的流套接字举个例,比如说accept函数,它就是任何进程调用它后,就会进入到阻塞状态,直到

有其它的客户端调用connect函数与该套接字建立连接为止,我觉得这个就比较合理吧,recvfrom实现是怎么样呢?
楼下的哥们谢了先,你的意思是说如果是工作在阻塞模式下的话,recvftom() 就会等待缓冲区中的数据到来是吗?

这个函数用来读取资料并记录资料来源的位址。对 Datagram Socket
(UDP)言,一次读取一个 Datagram;对 Stream Socket (TCP)言,其作用与recv() 相同,参数 from 及 fromlen 的值会被系统忽略。如果 Socket 为 Bl
ocking 模式,且目前 input buffer 内没有任何资料,则 recvftom() 将 block 到有任何资料到达为止;如果为 Non-Blocking 模式,且 input buffer 无任何资料,则会马上回复错误。