socketsocket 客户端长连接编程

请教一个Java Socket异步socket 客户端长连接客户端编程问题

服务端提供的是一条异步socket 客户端长连接.  

整个连接过程到WEB显示,   我用短连接每次访问重新建立连接然后断开的方式测试通过了.   当然,   會存在竞争问题...   我也想用socket 客户端长连接的方式,   但我遇到的难点是,   每个WEB用户的请求可以无差别的通过一个独立Proxy程序来发送到SMS端,   但SMS返回的信息(烸个请求在协议中都有RequestID的标识编号)我怎么把结果从Proxy程序返回到当初发出这个请求的WEB用户会话线程呢?   Proxy程序和SMS端建立和维持一个异步socket 客户端长連接,   它肯定是一个单线程的程序,   可以接收任何多线程的请求,   这个接受是无差别的,   只管往SMS发就是了,   但是返回的时候就应该有选择的返回给请求线程了.  

我就是这个问题困绕了我好久,   在网上查了几天也没有找到什么有意义的资料.   希望能在这里得到专业的解答,   谢谢了~~

短连接:建立连接发送数据包,关闭连接

socket 客户端长连接:建立连接发送数据包,发送心跳包发送数据包,发送心跳包发送心跳包。。。

所以又频繁的数据收发的话,短连接会频繁创建TCP连接而对于socket 客户端长连接,则始终用的是同一个TCP连接

同时这要是一个心跳的实例心跳只要不出现异常的凊况下,可以直接使用client连接发送数据包不需要new socket新建连接了。

accept()等待连接该方法阻塞当前线程直到建立连接为止

以上服务端的网络程序只能和一个客户端程序连接,拒绝多个客户端的连接

我们可以通过线程来解决这个问题:每当程序建立一个新的套接字连接,也就是调用accept方法时将启动一个新的线程来处理服务器和客户端的连接,而主程序将立即返回并等待下一个连接


我要回帖

更多关于 socket 客户端长连接 的文章

 

随机推荐