关于socket多线程通信问题
当客户端1发消息发给了服务器端以后,服务器端怎么找到目的客户端2,并把消息转发给他呢 --------------------编程问答-------------------- 你的服务器端需要一个数据集MAP之类来记录客户端名称和IP地址,,当你收到客户端1的消息,把他转发给客户端2,只要到数据集中找到对应的客户端2的IP发过去就行了。 --------------------编程问答-------------------- 你可以在客户端与服务器建立连接的时候 建一个类管理这些连接 像是存储用户号和与之对应的Socket 然后当服务器发发送的时候 根据用户号找到相应的链接 就可以发送了 --------------------编程问答--------------------额服务器根据用户号怎么找到目的客户端? --------------------编程问答--------------------
加我吧,论坛麻烦 453940712 --------------------编程问答--------------------
=======================================
如果只是发送信息,没有业务,为何不设备为获取操作权限,直接发送给客户端2。 --------------------编程问答-------------------- 那应该如何发送呢,你的意思是客户端a 直接发送给客户端b 吧是使用什么标示客户端呢端口号与IP?
--------------------编程问答-------------------- 客户端和服务端建立SOCKET链接的时候,就分配给这个客户端一个唯一值,然后把这个值和SOCKET塞入MAP表。下一次需要找这个客户端,通过这个唯一值就可以查询到这个SOCKET对象,就可以向这个客户端发送消息了 --------------------编程问答--------------------
=================================
可以这样理解,获取权限,即服务器验证正确,授于客户端2的IP地址给客户端a即可。 --------------------编程问答-------------------- 客户端在与服务端连接后服务端Socket就已经记录客户端的IP信息,这个已经被封装好了的 --------------------编程问答-------------------- 那么这个map表是存在客户端的还是服务器端的 那个唯一的值又是什么值啊,就是 是什么名称 --------------------编程问答-------------------- 服务端要对连接的客户端有管理啊
相当于一个客户端的key对应一个客户端 --------------------编程问答-------------------- 那应该就是在服务器处存储了 所有连接服务器的 客户端的IP地址呗 那 一般情况下 另这个权限是什么呢 ,而且这个验证应该是开始的时候验证是吧 等客户端之间聊天了之后就不需要验证了吧,然后客户端之间就直接发送信息了,不需要再通过服务器了。可是如果 我是在一台机器上模拟 那IP地址不就是一个吗 那又应该如何区分呢? 请引用一下我的话再回答,谢谢啦 --------------------编程问答-------------------- 服务端和客户端都要有一张表,客户端的表存储客户端代码,因为客户端要知道消息要发到哪里去,服务器存储客户端代码和真实ip地址的映射,然后转发消息。 --------------------编程问答--------------------
map表肯定是存在于服务端的,用来保存对应连接用户的SOCKET对象
唯一值就是自己分配一个可以标示这个SOCKET对象的ID值,这个ID作为键,SOCKET对象作为值存储到MAP表里
补充:Java , Java SE