码迷,mamicode.com
首页 > 编程语言 > 详细

c++之socket,阻塞模式

时间:2016-05-01 20:32:38      阅读:481      评论:0      收藏:0      [点我收藏+]

标签:

这里描述下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()阻塞

 

c++之socket,阻塞模式

标签:

原文地址:http://www.cnblogs.com/alazalazalaz/p/5450962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!