我的疑问是这样的:connect()先发出请求,然后呢?是不是等待回馈信息?收到回馈信息后(成功连接),才结束函数?那么我想问回馈信息是什么呢?他是单一的告知成功连接,还是说附带了具体内容直接给rev接受?就是说,成功连接的告知跟服务器具体内容的发送,是同时一起发的,还是说connect接受了成功连接告知后,结束函数,然后服务器再发送具体内容数据?
2 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
你的理解好像错了。
你要使用listen先建立服务端,然后使用connect让客户端连接到服务端。
服务端和客户端连接建立后,你可以使用send / recv 进行通信了。
精慕HU
TA贡献1845条经验 获得超8个赞
TCP的连接建立需要进行3次握手,你可以百度下:“TCP3次握手”看看对这个更详细的说明。
所以connect就是做这样3个工作:
发出sync包(就是请求建立连接)
等待sync-ack包(就是服务器的响应,允许建立连接),对此要么是等到服务器的ack包,那么进行第3步,要么是收到服务器地址不可达或者返回端口不可用的错误或者是在规定时间内没有受到服务器的响应那么就超时,不论如何,后面的错误会导致connect错误返回
connect函数发出ack包,表明连接正式建立,然后函数正确返回
至于数据到底是客户端先发出还是服务器端先发出,是由应用决定的,也就是在connect之后发生的。所以跟connect没有关系。connect之后你是想要recv还是send,随便你。
添加回答
举报
0/150
提交
取消