佛山做app网站,制造企业网站的建设目标,云服务器怎么建立网站,微信网站如何做TCP与UDP:
TCP:
TCP优点#xff1a; 可靠#xff0c;稳定 TCP的可靠体现在TCP在传递数据之前#xff0c;会有三次握手来建立连接#xff0c;而且在数据传递时#xff0c;有确认、窗口、重传、拥塞控制机制#xff0c;在数据传完后#xff0c;还会断开连接用来节约系统…TCP与UDP:
TCP:
TCP优点 可靠稳定 TCP的可靠体现在TCP在传递数据之前会有三次握手来建立连接而且在数据传递时有确认、窗口、重传、拥塞控制机制在数据传完后还会断开连接用来节约系统资源。
TCP缺点 因为TCP的繁琐机制造成了TCP会更慢消耗更多资源效率会比较低
UDP
UDP优点 因为没有TCP这么繁琐的机制即一个无状态的传输协议所以UDP的传输速度回非常快
UDP缺点 不可靠不稳定网速不好容易丢包
TCP
C/S 模式 -- 服务器/客户端模型client/server
server:socket()--bind()---listen()--accept()--recv()--close() 创建套接字--关联接口地址--等待连接--提取连接--收、发--关闭 client:socket()--connect()--send()--close(); 创建套接字--连接--收、发--关闭
三次握手/四次挥手建立/关闭连接
三次握手 两个标志SYN(同步序列编号)标志 ACK确认标志 客户端connect函数 服务器accept函数 第一次握手客户端发SYN表示希望建立连接客户端进入SYN_SENT状态 第二次握手服务端收到后回发SYN-ACK服务端进入SYN_RECEIVED状态 第三次握手客户端收到SYN-ACK回发ACK确认双方进入ESTABLISHED状态 客户端请求 -- 服务端收到请求通知客户端 -- 客户端确认握手结束双方建立连接
四次挥手 FIN结束标志 看谁先发close函数就是谁发起第一次握手 第一次挥手客户端发FIN并进入FIN_WAIT_1状态 第二次挥手服务器收到后发送ACK给客户端并进入CLOSE_WAIT 第三次挥手客户端完成所有数据接收后准备关闭连接发送FINTIME_WAIT状态 第四次挥手服务器收到FIN后发送ACK并关闭所有连接 客户端请求 -- 服务器收到请求通知客户端 -- 接收完所有数据后通知服务器关闭连接 -- 服务器收到请求后关闭连接
注
按照数据本身发送顺序放入缓冲区中 但是数据本身没有边界会出现黏包问题
解决1.加入结束标志发送strlen(buf)1个数据字符串 2.固定大小发的少10或者结构体 3.自定义协议开始结束标志长度
socket
int socket(int domain, int type, int protocol); 功能程序向内核提出创建一个基于内存的套接字描述符
参数domain 地址族PF_INET协议族 AF_INET地址族IPv4 互联网程序 PF_UNIX AF_UNIX 单机程序 type 套接字类型 SOCK_STREAM 流式套接字 》TCP SOCK_DGRAM 用户数据报套接字UDP SOCK_RAW 原始套接字 》IP protocol 协议 -- 0 表示自动适应应用层协议。
返回值成功 返回申请的套接字id 失败 -1
bind
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen); 功能如果该函数在服务器端调用则表示将参数1相关 的文件描述符文件与参数2 指定的接口地址关联 用于从该接口接受数据。 如果该函数在客户端调用则表示要将数据从 参数1所在的描述符中取出并从参数2所在的接口 设备上发送出去。 注意如果是客户端则该函数可以省略由默认 接口发送数据。 参数sockfd 之前通过socket函数创建的文件描述符套接字id my_addr 是物理接口的结构体指针。表示该接口的信息。 struct sockaddr 通用地址结构 { u_short sa_family; 地址族 char sa_data[14]; 地址信息 }; 转换成网络地址结构如下 struct _sockaddr_in ///网络地址结构 { u_short sin_family; 地址族 u_short sin_port; ///地址端口 struct in_addr sin_addr; ///地址IP char sin_zero[8]; 占位 }; struct in_addr { in_addr_t s_addr; } socklen_t addrlen: 参数2 的长度。 返回值成功 0 失败 -1
listen int listen(int sockfd, int backlog); 功能在参数1所在的套接字id上监听等待链接。把套接字变为监听状态 参数sockfd 套接字id backlog 允许链接的个数。三次握手的排队数 返回值成功 0 失败 -1
accept 功能从已经监听到的队列中取出有效的客户端链接并 接入到当前程序。 参数sockfd 套接字id addr 如果该值为NULL 表示不论客户端是谁都接入。 如果要获取客户端信息则事先定义变量 并传入变量地址函数执行完毕将会将客户端 信息存储到该变量中。 addrlen 参数2的长度如果参数2为NULL则该值 也为NULL 如果参数不是NULLlen; 一定要写成len sizeof(struct sockaddr); 返回值成功 返回一个用于通信的新套接字id 从该代码之后所有通信都基于该id 失败 -1
在connect函数的最后一个参数是socklen_t类型
而在accept函数中最后一个参数是socklen_t *类型
一般在第一次调用socket时取名listenfd只用到listen到该函数时被替换
typedef struct inetaddr *(SA);
int listenfd socket(AF_INET,SOCK_STREAM,0); //第一个创建的套接字文件描述符
int conn connect(listenfd,(SA)cli,len); //connect创建的新描述符
recv
ssize_t recv(int sockfd, void *buf, size_t len, int flags); 功能从指定的sockfd套接字中以flags方式获取长度 为len字节的数据到指定的buff内存中。 参数sockfd 如果服务器则是accept的返回值的新fd 如果客户端则是socket的返回值旧fd buff 用来存储数据的本地内存一般是数组或者 动态内存可以是结构体连续的一段内存即可。 len 要获取的数据长度 flags 获取数据的方式0 表示阻塞接受。
返回值成功 表示接受的数据长度一般小于等于len 失败 -1
send
int send(int sockfd, const void *msg, size_t len, int flags); 功能从msg所在的内存中获取长度为len的数据以flags 方式写入到sockfd对应的套接字中。 参数sockfd用自己的套接字描述符即可send和recv都一样 msg 要发送的消息 len 要发送的消息长度 flags 消息的发送方式。 返回值成功 发送的字符长度 失败 -1
close
close() 关闭指定的套接字id
客户端
socketconnectsendclose
connect
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 功能该函数固定有客户端使用表示从当前主机向目标 主机发起链接请求。 参数sockfd 本地socket创建的套接子id addr 远程目标主机的地址信息。 addrlen: 参数2的长度。 返回值成功 0 失败 -1 在connect函数的最后一个参数是socklen_t类型 而在accept函数中最后一个参数是socklen_t *类型 文章转载自: http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn http://www.morning.wmqrn.cn.gov.cn.wmqrn.cn http://www.morning.qggm.cn.gov.cn.qggm.cn http://www.morning.fnkcg.cn.gov.cn.fnkcg.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn http://www.morning.jcwt.cn.gov.cn.jcwt.cn http://www.morning.gxtbn.cn.gov.cn.gxtbn.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn http://www.morning.wqkzf.cn.gov.cn.wqkzf.cn http://www.morning.drytb.cn.gov.cn.drytb.cn http://www.morning.ngkng.cn.gov.cn.ngkng.cn http://www.morning.llllcc.com.gov.cn.llllcc.com http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.pndhh.cn.gov.cn.pndhh.cn http://www.morning.kklwz.cn.gov.cn.kklwz.cn http://www.morning.cjwkf.cn.gov.cn.cjwkf.cn http://www.morning.kyzja.com.gov.cn.kyzja.com http://www.morning.phwmj.cn.gov.cn.phwmj.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.kpzrf.cn.gov.cn.kpzrf.cn http://www.morning.ssrjt.cn.gov.cn.ssrjt.cn http://www.morning.bybhj.cn.gov.cn.bybhj.cn http://www.morning.zrks.cn.gov.cn.zrks.cn http://www.morning.rtkgc.cn.gov.cn.rtkgc.cn http://www.morning.mrgby.cn.gov.cn.mrgby.cn http://www.morning.qhln.cn.gov.cn.qhln.cn http://www.morning.snnkt.cn.gov.cn.snnkt.cn http://www.morning.txfxy.cn.gov.cn.txfxy.cn http://www.morning.kzpy.cn.gov.cn.kzpy.cn http://www.morning.chxsn.cn.gov.cn.chxsn.cn http://www.morning.fyglg.cn.gov.cn.fyglg.cn http://www.morning.nfpct.cn.gov.cn.nfpct.cn http://www.morning.ygpdm.cn.gov.cn.ygpdm.cn http://www.morning.cnqdn.cn.gov.cn.cnqdn.cn http://www.morning.hwcgg.cn.gov.cn.hwcgg.cn http://www.morning.kdxzy.cn.gov.cn.kdxzy.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.gslz.com.cn.gov.cn.gslz.com.cn http://www.morning.qlckc.cn.gov.cn.qlckc.cn http://www.morning.qxwrd.cn.gov.cn.qxwrd.cn http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn http://www.morning.ywqsk.cn.gov.cn.ywqsk.cn http://www.morning.pghgq.cn.gov.cn.pghgq.cn http://www.morning.dtfgr.cn.gov.cn.dtfgr.cn http://www.morning.wbns.cn.gov.cn.wbns.cn http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn http://www.morning.frfpx.cn.gov.cn.frfpx.cn http://www.morning.nhzxr.cn.gov.cn.nhzxr.cn http://www.morning.bnlsd.cn.gov.cn.bnlsd.cn http://www.morning.qllcp.cn.gov.cn.qllcp.cn http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn http://www.morning.bwzzt.cn.gov.cn.bwzzt.cn http://www.morning.wqbzt.cn.gov.cn.wqbzt.cn http://www.morning.zbgqt.cn.gov.cn.zbgqt.cn http://www.morning.smxrx.cn.gov.cn.smxrx.cn http://www.morning.ptwrz.cn.gov.cn.ptwrz.cn http://www.morning.smrty.cn.gov.cn.smrty.cn http://www.morning.stph.cn.gov.cn.stph.cn http://www.morning.kmqjx.cn.gov.cn.kmqjx.cn http://www.morning.xhsxj.cn.gov.cn.xhsxj.cn http://www.morning.redhoma.com.gov.cn.redhoma.com http://www.morning.rkxk.cn.gov.cn.rkxk.cn http://www.morning.dyght.cn.gov.cn.dyght.cn http://www.morning.rjtmg.cn.gov.cn.rjtmg.cn http://www.morning.rhgtc.cn.gov.cn.rhgtc.cn http://www.morning.zypnt.cn.gov.cn.zypnt.cn http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn http://www.morning.yrkdq.cn.gov.cn.yrkdq.cn http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn http://www.morning.zzqgc.cn.gov.cn.zzqgc.cn http://www.morning.wcczg.cn.gov.cn.wcczg.cn http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn http://www.morning.cnlmp.cn.gov.cn.cnlmp.cn http://www.morning.nytgk.cn.gov.cn.nytgk.cn http://www.morning.prjns.cn.gov.cn.prjns.cn http://www.morning.kxqpm.cn.gov.cn.kxqpm.cn