一 .流式套接字:
又称TCP套接字,它以字节流的方式传输数据。
特点:面向连接的—>>可靠的—>>流式套接字
二.TCP套接字编程
服务端流程 | 客户端流程 |
---|---|
socket---->>创建套接字 | socket---->>创建套接字 |
bind---->>绑定IP和端口 | connect---->>连接服务器 |
listen---->>监听 | send/recv—>>收发消息 |
accept---->>阻塞等待客户端的连接 | cloose---->>关闭套接字 |
send/recv—>>收发消息 | |
close---->>关闭套接字 |
三.网络收发缓冲区:
- 网络缓冲区协调了消息的收发速度。
- send/recv收发消息都是通过网络缓冲区,当缓冲区只要不是空,recv就不会阻塞。
注意注意!!!
TCP会产生一个“粘包”问题。
原因:
- TCP没有消息边界。
- 发的消息快,接收消息慢。
解决方法:
- 控制收发速度,用sleep()函数
- 添加消息边界
四.代码演示
*[HTML]:服务端代码: