Linux网络编程基础实验(8)
时间:2025-04-21
时间:2025-04-21
了解SOCKET编程,熟悉C/S模式服务器和客户端。
参数 flags一般设0。其他数值定义如下:
MSG_OOB 接收以out-of-band 送出的数据。
MSG_PEEK 返回来的数据并不会在系统内删除,如果再调用recv()会返回相同的
数据内容。
MSG_WAITALL强迫接收到len大小的数据后才能返回,除非有错误或信号产生。
MSG_NOSIGNAL此操作不愿被SIGPIPE信号中断返回值成功则返回接收到的字
符数,失败返回-1,错误原因存于errno中。
错误代码 同send
(9)recvfrom(经socket接收数据)
相关函数 recv,recvmsg,send,sendto,socket
表头文件 #include<sys/types.h>
#include<sys/socket.h>
定义函数 int recvfrom(int s,void *buf,int len,unsigned int flags ,struct sockaddr *from ,int
*fromlen);
并把数据存到由参数buf 指函数说明 recv()用来接收远程主机经指定的socket 传来的数据,
向的内存空间,参数len 为可接收数据的最大长度。参数flags 一般设0,其他数
值定义请参考recv()。参数from用来指定欲传送的网络地址,结构sockaddr 请参
考bind()。参数fromlen为sockaddr的结构长度。
返回值 成功则返回接收到的字符数,失败则返回-1,错误原因存于errno中。
错误代码 同send。
(10)select(I/O复用机制)
表头文件 #include<sys/time.h>
#include<sys/types.h>
#include<unistd.h>
定义函数 int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval *
timeout);
函数说明 select()用来等待文件描述词状态的改变。参数n代表最大的文件描述词加1,参数
readfds、writefds 和exceptfds 称为描述词组,是用来回传该描述词的读,写或例
外的状况。底下的宏提供了处理这三种描述词组的方式:
FD_CLR(inr fd,fd_set* set);用来清除描述词组set中相关fd 的位
FD_ISSET(int fd,fd_set *set);用来测试描述词组set中相关fd 的位是否为真
FD_SET(int fd,fd_set*set);用来设置描述词组set中相关fd的位
FD_ZERO(fd_set *set); 用来清除描述词组set的全部位
参数 timeout为结构timeval,用来设置select()的等待时间,其结构定义如下
struct timeval
{
time_t tv_sec;
time_t tv_usec;
};
返回值 如果参数timeout设为NULL则表示select()没有timeout。
上一篇:用友系列产品报价表
下一篇:牙龈萎缩的治疗方法是什么