Q:服务器要处理多线程问题,为每个请求连接的客服端创建一个线程,现在的问题是服务器收到一个客户端的信息后如何判断是发送给哪个客户端的信息,同时如何发送,好像服务器不能主动发送信息给客服端,所以头疼了!有些人介绍时候可以让客户端也实现服务器的模式 用socket.accpet监听服务器的请求,具体要怎么实现,请高手指点一下!

A:

每个客户端都会有自己的 Socket 对象,这个判断起来很麻烦吗?

Map<String, Socket> clients = new HashMap<String, Socket>();
clients.put("user1", sck1);


楼上的意思是说服务器端监听到客服端请求以后创建一个socket,然后把socket加入map中吗?比如:Socket client=server.accept();Map <String, Socket> clients = new HashMap <String, Socket>();
clients.put("user1", client);然后在从Map中取出相应客户端的socket进行通信。是不是这样?
如果是这样的话那怎么判断是发送给哪个客户端,假设A客户端发送给客户端,那我们可以再A客户端发送的信息里面添加B客户端的信息,然后在Map里面找到B客服端socket在进行通信,这样好不好?


客户端跟服务端建立一次连接后,服务端会一直跟跟客户端保持通讯,只要连接没有断开,服务端会一直跟该客户端保持通讯