机票网站开发知乎,wordpress头部文件,thinphp 做外贸网站,网店如何做推广一、UDP协议
1.1、recvfrom()
参数说明
int sockfd, //socket 的fd
void *buf, // 保存数据的一块空间的地址
size_t len, //这块空间的大小
int flags,// 0 默认的接收方式 -----阻塞方式 默认行为是阻塞 MSG_DONTWAIT 不阻塞方式#xff0c;用他的话代表读的时候是非…一、UDP协议
1.1、recvfrom()
参数说明
int sockfd, //socket 的fd
void *buf, // 保存数据的一块空间的地址
size_t len, //这块空间的大小
int flags,// 0 默认的接收方式 -----阻塞方式 默认行为是阻塞 MSG_DONTWAIT 不阻塞方式用他的话代表读的时候是非阻塞方式类似与读操作如果没有东西就等待一直等待如果我们把发送和接收放一块的话读端没有发送也会使我们写端阻塞到哪里除非数据发送过来
struct sockaddr *src_addr,//用来保存发送方的地址信息接收谁给发的
socklen_t *addrlen);表示发送方发送实际的地址信息大小
注意 要是不关心是谁我们addrlen或者大小写NULL
我们先将值传递过去他会将我们的真实的长度带出来也就是说我们自己建立好一个他的地址信息的结构体
返回值
成功 返回接收到的字节数
失败 返回-1
注意点
inet_ntoa()将网络的字节序变成字符串类型ntohs() 将网络的端口号转换成主机号的当一个socket创建之后它存在它存在了一个命名空间但是没有地址绑定bind()就是给其进行绑定一个地址相当于给一个套接字绑定了一进程的信息绑定的IP是我们地址服务器所在那台电脑的地址信息socket 不绑系统会绑定
1.2、bind()绑定
服务器是需要绑定一下来进行操作 int bind(int sockfd, const struct sockaddr *addrsocklen_t addrlen);
功能:
如果该函数在服务器端调用则表示将参数1相关的文件描述符文件与参数2指定的接口地址关联:用于从该接口接受数据。如果该函数在客户端调用则表示要将数据从参数1所在的描述符中取出并从参数2所在的接口设备上发送出去。注意: 如果是客户端则该函数可以省略由默认接口发送数据。
参数
sockfd 之前通过socket函数创建的文件描述符套接字id my_addr 是物理接口的结构体指针。表示该接口的信息。
注意点
客户端可以绑定地址但一般不绑定 为什么要给服务器绑定地址因为初始的时候如果服务器开始没有发信息那么客户端就找不到所以要绑定地址绑定的是服务器端运行的地址
二、TCP 2.1、客户端
1、建立连接
socket //买了一部手机
bind // 可选 //插上sim卡
connect 发起连接 // 拨打电话
2、通信过程
read
write
close
2.2、服务器端
1、建立连接
socket // 买了一部手机
bind //插上sim卡
listen //监听 客户端的连接请求
accept //接听
2、通信过程
read
write
close
2.3、TCP连接建立
1、tcp三次握手建立连接
客户端 服务器
-----我要和你连接---------------------
-------------------------------好的可以建立连接
-----------好------------------------------
2、tcp 四次挥手断开连接
客户端 服务器
-----我要和你断开连接---------------------
-------------------------------好的可以断开
-------------------------------我也要断开-------
-----------好----------------------------------------- 三、函数实现
3.1、connect()建立连接
#include sys/types.h /* See NOTES */#include sys/socket.hint connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);功能:该函数固定有客户端使用表示从当前主机向目标主机发起链接请求。 参数:
sockfd 本地socket创建的套接子daddr 远程目标主机的地址信息addrlen:参数2的长度。
返回值:成功0 失败 -1
3.2、listen() 监听
#include sys/types.h /* See NOTES */#include sys/socket.hint listen(int sockfd, int backlog);
功能
反应监听那个套接字并且建立成功之后返回一个新的套接字
参数
当前的套接字同时可以监听的个数
返回值
正确 返回建立的新的套接字错误 返回 -1
listen 会标记一下被动的socket这个socket将会被用来接受到来的接受请求
注意
其有两个socket
1、监听的socket
2、处理建立连接的socket后续进行操作的socket
3.3、listen工作原理图 四、编程时注意的点
write的时候是有校字长的同时也要注意加\0否则读出来的时候会指针越界我们没有给其添加结束标志 read和write读写的时候注意要是对应的buf