Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
昨晚 Vv 让我给她讲讲网络编程,于是我就傻乎乎的带她入了门…
以下内容为讲课时制作的笔记~
1. socket() 函数
1.1 头文件
复制代码
- 1
#include
1.2 函数参数
示例:int socket(int domain, int type, int protocol){...}
-
domain:设置协议域(协议族)
- AF_INET:IPV4
- AF_INET6:IPV6
- ⋯⋯\cdots
协议族决定了 socket 的地址类型,在通信中必须采用对应类型的地址
-
type:指定 socket 类型
- SOCKET_STREAM:流式 socket,针对于面向连接的 TCP 服务应用
- SOCKET_DGRAM:数据报式 socket,针对于无连接的 UDP 服务应用
- ⋯⋯\cdots
-
protocal:指定协议
- 000:自动选择第二个参数类型对应的传输协议
- IPPROTO_TCP:TCP传输协议
- IPPROTO_UDP:UDP传输协议
- ⋯⋯\cdots
type 和 protocal 不能随意组合,如 SOCKET_STREAM 不能和 IPPROTO_UDP 组合
1.3 返回值
示例:int sock_fd = socket(AF_INET, SOCKET_DGRAM, 0);
sock_fd = -1
:套接字创建失败sock_fd = x(x >= 0)
:套接字创建成功,返回套接字的文件描述符(索引)
套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。
1.4 Socket是什么?
socket是对TCP/IP协议簇的封装,它的出现只是使得程序员更方便地使用TCP/IP协议栈而已。socket本身并不是协议,它是应用层与TCP/IP协议族通信的中间软件抽象层,是一组调用接口(TCP/IP网络的API函数)