TCP/UDP的一些区别
TCP
服务端创建TCP连接,其作用是监听并接受来自其他IP的连接请求
1. 创建套接字
socket();
参数:1. 协议族,即IPV4还是IPV6;2. 套接字类型,有着比较更复杂的选择,但是一般就是根据选择TCP或UDP进行确定;3. 协议,可以选择TCP或UDP,一般使用0,其会通过前两个参数进行自动决定。
返回:成功返回非-1,失败返回-1
2. 绑定套接字到IP和端口
bind()
参数:1. 套接字;2. sockaddr类型的参数,当我们用IPV4时,会创建一个sockaddr_in类型的变量,然后对希望监听的ip和端口号进行设置,如协议族,ip,端口,空8位,最后再转化为sockaddr类型;3. sockaddr的结构体大小
返回:成功返回非-1,失败返回-1
3. 开始监听
listen()
参数:1. 套接字;2. 最大连接数
返回:成功返回非-1,失败返回-1
4. 开始监听后,使用accept进行接受连接,在接收到请求之前持续堵塞
accept()
参数:1. 套接字;2. sockaddr保存远程主机的信息;3. sockaddr结构体大小
返回:成功返回和客户端通信的套接字,失败返回-1
5. 接收数据
recv()
参数:1. 套接字(int *类型);2. 存储数据的缓存;3. 缓存大小
返回:成功返回非-1,失败返回-1
6. 发送数据
send()
参数:1. 通信对方的套接字;2. 发送数据的缓存;3. 缓存大小
返回:成功返回非-1,失败返回-1
7. 关闭套接字
close()
参数:套接字
返回:成功返回非-1,失败返回-1
客户端创建TCP连接,其作用是发起对服务端的连接
1. 创建套接字
2. 发起连接
connect()
参数:1. 套接字;2. 对象服务器的IP和端口信息sockaddr,这里和服务端一致;3. sockaddr结构体大小
返回:成功返回非-1,失败返回-1
3. 发送/接收同服务端
UDP
UDP不存在服务端和客户端,因为本身不需要进行连接,而是直接发送和持续接收,所以每个进程要做的事是绑定自身IP和端口以及设置好目标进程的IP和端口
后面有空再补上代码例子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通