当前位置: 技术问答>linux和unix
关于异步socket
来源: 互联网 发布时间:2016-02-22
本文导语: 我使用socket的tcp连接 两个线程 一个发送线程 一个接收线程。发送请求消息后服务器都会给一个响应消息。我想问一下 我异步不断的发送后,发送的消息有先后顺序,那么服务器返回的消息,能够按发送消息的顺...
我使用socket的tcp连接 两个线程 一个发送线程 一个接收线程。发送请求消息后服务器都会给一个响应消息。我想问一下 我异步不断的发送后,发送的消息有先后顺序,那么服务器返回的消息,能够按发送消息的顺序给出对应的返回消息顺序呢。我觉得有可能不行的,请教大虾们!其实我是在做一个ldap的应用,本来是用messageid来区分顺序的,可是今天看sdk的代码发现messageid是不发送到服务端的,这样只能同步了,哎 很晕
|
不要光想着行不行. 先动手做..
如果你的 服务器端, 收到数据,处理完后就返回给客户端(在同一个线程中做完全部工作)
那么, 它回复的数据,应该和你客户端发送 的数据 顺序是一样的。.
然后, 你发送的数据协议是自己定的还是?
如果是自己定的可以加上你说的 messageid 来区分,
或者, 一般协议中都有保留位, 你也可以拿来用。
如果你的 服务器端, 收到数据,处理完后就返回给客户端(在同一个线程中做完全部工作)
那么, 它回复的数据,应该和你客户端发送 的数据 顺序是一样的。.
然后, 你发送的数据协议是自己定的还是?
如果是自己定的可以加上你说的 messageid 来区分,
或者, 一般协议中都有保留位, 你也可以拿来用。
|
异步发送消息时,这边顺序发送信息,但接收方不一定是顺序接受
|
从理论上讲是一致的!
但是,实际上会遇见一些需要解决的问题,比如服务器程序和客户程序是否是单线程直接通信的;
tcp的断链问题;以及包重叠的问题;可能还有其他问题.....
标准协议是死的,人是活的
但是,实际上会遇见一些需要解决的问题,比如服务器程序和客户程序是否是单线程直接通信的;
tcp的断链问题;以及包重叠的问题;可能还有其他问题.....
标准协议是死的,人是活的
|
在你发送的数据里加上唯一的标识,并且要求对方返回时也原样返回。接收时匹配个标识就行了。