当前位置:编程学习 > JAVA >>

关于socket多线程通信问题

当客户端1发消息发给了服务器端以后,服务器端怎么找到目的客户端2,并把消息转发给他呢 --------------------编程问答-------------------- 你的服务器端需要一个数据集MAP之类来记录客户端名称和IP地址,,当你收到客户端1的消息,把他转发给客户端2,只要到数据集中找到对应的客户端2的IP发过去就行了。 --------------------编程问答-------------------- 你可以在客户端与服务器建立连接的时候 建一个类管理这些连接 像是存储用户号和与之对应的Socket 然后当服务器发发送的时候 根据用户号找到相应的链接 就可以发送了 --------------------编程问答--------------------
引用 2 楼 a1216164960 的回复:
你可以在客户端与服务器建立连接的时候 建一个类管理这些连接 像是存储用户号和与之对应的Socket 然后当服务器发发送的时候 根据用户号找到相应的链接 就可以发送了


额服务器根据用户号怎么找到目的客户端? --------------------编程问答--------------------
引用 3 楼 a453940712 的回复:
引用 2 楼 a1216164960 的回复:你可以在客户端与服务器建立连接的时候 建一个类管理这些连接 像是存储用户号和与之对应的Socket 然后当服务器发发送的时候 根据用户号找到相应的链接 就可以发送了

额服务器根据用户号怎么找到目的客户端?


加我吧,论坛麻烦  453940712 --------------------编程问答--------------------
引用 4 楼 a453940712 的回复:
引用 3 楼 a453940712 的回复:引用 2 楼 a1216164960 的回复:你可以在客户端与服务器建立连接的时候 建一个类管理这些连接 像是存储用户号和与之对应的Socket 然后当服务器发发送的时候 根据用户号找到相应的链接 就可以发送了

额服务器根据用户号怎么找到目的客户端?

加我吧,论坛麻烦  453940712

=======================================
如果只是发送信息,没有业务,为何不设备为获取操作权限,直接发送给客户端2。 --------------------编程问答--------------------
引用 5 楼 lizhengguang 的回复:
引用 4 楼 a453940712 的回复:引用 3 楼 a453940712 的回复:引用 2 楼 a1216164960 的回复:你可以在客户端与服务器建立连接的时候 建一个类管理这些连接 像是存储用户号和与之对应的Socket 然后当服务器发发送的时候 根据用户号找到相应的链接 就可以发送了

额服务器根据用户号怎么找到目的客户端?

加我吧,论坛麻烦  4……
那应该如何发送呢,你的意思是客户端a 直接发送给客户端b  吧是使用什么标示客户端呢端口号与IP?
--------------------编程问答-------------------- 客户端和服务端建立SOCKET链接的时候,就分配给这个客户端一个唯一值,然后把这个值和SOCKET塞入MAP表。下一次需要找这个客户端,通过这个唯一值就可以查询到这个SOCKET对象,就可以向这个客户端发送消息了 --------------------编程问答--------------------
引用 7 楼 sxjkk 的回复:
客户端和服务端建立SOCKET链接的时候,就分配给这个客户端一个唯一值,然后把这个值和SOCKET塞入MAP表。下一次需要找这个客户端,通过这个唯一值就可以查询到这个SOCKET对象,就可以向这个客户端发送消息了


=================================
可以这样理解,获取权限,即服务器验证正确,授于客户端2的IP地址给客户端a即可。 --------------------编程问答-------------------- 客户端在与服务端连接后服务端Socket就已经记录客户端的IP信息,这个已经被封装好了的 --------------------编程问答--------------------
引用 7 楼 sxjkk 的回复:
客户端和服务端建立SOCKET链接的时候,就分配给这个客户端一个唯一值,然后把这个值和SOCKET塞入MAP表。下一次需要找这个客户端,通过这个唯一值就可以查询到这个SOCKET对象,就可以向这个客户端发送消息了
那么这个map表是存在客户端的还是服务器端的 那个唯一的值又是什么值啊,就是 是什么名称 --------------------编程问答-------------------- 服务端要对连接的客户端有管理啊
相当于一个客户端的key对应一个客户端 --------------------编程问答--------------------
引用 8 楼 lizhengguang 的回复:
引用 7 楼 sxjkk 的回复:客户端和服务端建立SOCKET链接的时候,就分配给这个客户端一个唯一值,然后把这个值和SOCKET塞入MAP表。下一次需要找这个客户端,通过这个唯一值就可以查询到这个SOCKET对象,就可以向这个客户端发送消息了

=================================
可以这样理解,获取权限,即服务器验证正确,授于客户……
那应该就是在服务器处存储了 所有连接服务器的 客户端的IP地址呗 那 一般情况下 另这个权限是什么呢 ,而且这个验证应该是开始的时候验证是吧 等客户端之间聊天了之后就不需要验证了吧,然后客户端之间就直接发送信息了,不需要再通过服务器了。可是如果 我是在一台机器上模拟 那IP地址不就是一个吗 那又应该如何区分呢? 请引用一下我的话再回答,谢谢啦 --------------------编程问答-------------------- 服务端和客户端都要有一张表,客户端的表存储客户端代码,因为客户端要知道消息要发到哪里去,服务器存储客户端代码和真实ip地址的映射,然后转发消息。 --------------------编程问答--------------------
引用 10 楼 a1216164960 的回复:
引用 7 楼 sxjkk 的回复:客户端和服务端建立SOCKET链接的时候,就分配给这个客户端一个唯一值,然后把这个值和SOCKET塞入MAP表。下一次需要找这个客户端,通过这个唯一值就可以查询到这个SOCKET对象,就可以向这个客户端发送消息了那么这个map表是存在客户端的还是服务器端的 那个唯一的值又是什么值啊,就是 是什么名称


map表肯定是存在于服务端的,用来保存对应连接用户的SOCKET对象
唯一值就是自己分配一个可以标示这个SOCKET对象的ID值,这个ID作为键,SOCKET对象作为值存储到MAP表里
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,