socket原理详解 (4)

Don\'t use a gateway to send out the packet, only send to hosts on directly connected networks. This is usually used only by
diagnostic or routing programs. This is only defined for protocol families that route; packet sockets don\'t.

MSG_OOB,带外数据

Sends out-of-band data on sockets that support this notion (e.g., of type SOCK_STREAM); the underlying protocol must also sup‐
port out-of-band data.

其他

3.8、接受消息接口

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

#include <sys/types.h>
#include <sys/socket.h>

ssize_t recv(int sockfd, void *buf, size_t len, int flags);

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);

ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);

这几个接口都比较好理解,查一下man pages就知道什么含义了,man pages中讲解的非常清楚。

4、socket编程流程及tcp状态变迁

先做一个说明,下面的图都不是原创,是本人收藏已久的一些原理图,来源已经不记得了,如果大家知道来源的可以留言。

socket编程的一般模型是固定的,下面我就以几幅图来说明,由于插图中已经有说明,我就不在做补充说明了。

4.1 c/s模式之TCP

 

socket原理详解

socket原理详解

                             图8 c/s模型tcp编程流程图及tcp状态变迁图

4.2 c/s模式之UDP

socket原理详解

socket原理详解

                                图9 c/s模型udp编程流程图

 

参考资料:

《tcp/ip协议详解卷一、卷二》

socket函数的domain、type、protocol解析

创建socket函数的第三个参数的意义

陶辉:高性能网络编程(一)----accept建立连接

什么是带外数据

Linux的SOCKET编程详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjsxd.html