c++之socket,阻塞模式
2016-05-01 19:05
447 查看
这里描述下socket的阻塞模式:
首先,socket有几个函数
socket() 创建socket
bind() 绑定socket到一个地址
listen() 开启soket监听
accept() 接受别人来连接我,这个是个阻塞函数,一般服务器调用。
recv() 接受对方发过来的消息,这个也是阻塞函数,因为TCP要等对方把消息传递完整后再执行把消息从buff里面copy过来。这个客户端和服务器都要调用,注意~!!!!!
send() 发送消息
connect() 连接socket,一般是客户端。
上面accept和recv都是阻塞函数,要注意!!!
举例:
1、server开启后,会阻塞在accetp函数,等待别人连接。
2、client 1 开启connect ,然后立即返回,继续执行客户端的代码。此刻,server收到请求,继续执行server代码,一般连接成功后写recv函数,所以server阻塞在recv。
3、client
time client 1 client 2 server
1 accept,阻塞
2 connect后立即返回
3 收到client 1的con
4 执行recv,阻塞
5 connect
6 (收到client 2的连接,但是程序阻塞,所以排入队列)
7 send("c2")
8 (收到client 2的数据,但是程序阻塞,所以排入队列)
9 recv(),阻塞
10 send("c1"), 并recv()阻塞
11 收到client 1的数据c1,并send("hello c1 , im server")
12 收到数据("hello c1 , im server")通信完成
13 server执行完11步骤后,立即查看队列还有一个没处理,所以处理c2的连接,收到数据"c2",发送(“"hello c2 , im server"”)
14 收到数据(“"hello c2 , im server"”)通信完成
15 accept()阻塞
首先,socket有几个函数
socket() 创建socket
bind() 绑定socket到一个地址
listen() 开启soket监听
accept() 接受别人来连接我,这个是个阻塞函数,一般服务器调用。
recv() 接受对方发过来的消息,这个也是阻塞函数,因为TCP要等对方把消息传递完整后再执行把消息从buff里面copy过来。这个客户端和服务器都要调用,注意~!!!!!
send() 发送消息
connect() 连接socket,一般是客户端。
上面accept和recv都是阻塞函数,要注意!!!
举例:
1、server开启后,会阻塞在accetp函数,等待别人连接。
2、client 1 开启connect ,然后立即返回,继续执行客户端的代码。此刻,server收到请求,继续执行server代码,一般连接成功后写recv函数,所以server阻塞在recv。
3、client
time client 1 client 2 server
1 accept,阻塞
2 connect后立即返回
3 收到client 1的con
4 执行recv,阻塞
5 connect
6 (收到client 2的连接,但是程序阻塞,所以排入队列)
7 send("c2")
8 (收到client 2的数据,但是程序阻塞,所以排入队列)
9 recv(),阻塞
10 send("c1"), 并recv()阻塞
11 收到client 1的数据c1,并send("hello c1 , im server")
12 收到数据("hello c1 , im server")通信完成
13 server执行完11步骤后,立即查看队列还有一个没处理,所以处理c2的连接,收到数据"c2",发送(“"hello c2 , im server"”)
14 收到数据(“"hello c2 , im server"”)通信完成
15 accept()阻塞
相关文章推荐
- 对c语言的一些看法
- C++类中const函数与非const函数的调用规则
- c++11 正则表达式基本使用
- c++与oc的对比
- 存储类&作用域&生命周期&链接属性
- 0--学习C++的意义
- 用C语言写的注释转换
- C语言中%d,%o,%f,%e,%x的意义
- C/C++中near和far
- c++写windows服务程序
- rapidjson初探——使用C++解析json
- C语言编程程序的内存如何布局
- C++随笔
- C语言中的restrict,const,volatile
- C++信号处理
- C++中sleep()函数
- C++预处理器
- 【C语言】静态顺序表的实现(包括头插、头删、尾插、尾删、查找、删除指定位置)
- C/C++ 将数据乱序
- 面向对象C++(从生物学理解继承 )