A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵永康 中级黑马   /  2012-9-18 18:32  /  1374 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就是我们在tcp传输的时候,加入许多客户端向同一个服务器同时发送请求,他的服务器是怎么能辨别出事那个客户端发的请求,在处理的时候而不能出错呢??
就像QQ中聊天的时候,我们怎么能确保发送和收到的消息就是同一个人,而不会发乱!!!

4 个回复

倒序浏览
当客户端向服务器发出请求时,服务器能够获得客户端的socket。即客户端和服务器端是同一个socket,自然能准确的发送到客户端。
回复 使用道具 举报
其实楼主没有理解tcp传输的原理。在tcp传输中服务器和客户端之间,需要先建立一条tcp连接(注意是虚连接)。
而表示这条tcp连接的是靠服务器和客户端中的socket来表示的,因而不论有多少个客户端向这个服务器发生请求。这些客户端都会把自己的socket发送给服务器端的。
所以服务器端就是依靠 这个客户端发送过来的socket来判断是哪个一个客户端的。
对于这个问题我感觉楼主还是对 tcp的传输原理不太清楚。
楼主可以看看 毕老师第24天的 哪个关于向服务器端上传图片的例子: UploadPicByThread.java的例子,结合这个例子好好理解一下tcp原理和以及socket原理。
如果楼主还不清楚的话,就去看看 谢希仁的《计算机网络》中关于tcp那一节的 吧,很权威的,很全的一本书。
回复 使用道具 举报
每一个客户端都建立一个socket,服务器端是ServerSocket(负责接收从socket传来的信息),客户端和服务器端通过socket通信,
然后socket中有输入流和输出流,你在客户端发的信息写入到socket的outputStream里,在服务器端拿到socket的inputStream,就能读到相应的信息了!
回复 使用道具 举报
是不是这么个意思???
首先我们建立Socket服务和ServerSocket服务,通过ServerSocket的accept()方法来获得Socket,这个目的就是监听同一个端口,就好比是我们两台主机相连接上。
然后Socket这边就通过它的getInputStream()和getOutputStream(),ServerSocket这端通过accept()方法来获得的Socket的getInputStream()和getOutputStream(),
Socket通过getOutputStream()和ServerSocket的getInputStream()相连接;Socket通过getInputStream()和ServerSocket的getOutputStream()相连接。此时就建立了具体软件的连接。  再有其他的软件也就是同样的原理进行连接的。
请大家指正
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马