Linux网络编程基础实验(8)

时间: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。

Linux网络编程基础实验(8).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219