java socket

xjpshh 2009-12-02 01:36:23
服务器要处理多线程问题,为每个请求连接的客服端创建一个线程,现在的问题是服务器收到一个客户端的信息后如何判断是发送给哪个客户端的信息,同时如何发送,好像服务器不能主动发送信息给客服端,所以头疼了!有些人介绍时候可以让客户端也实现服务器的模式 用socket.accpet监听服务器的请求,具体要怎么实现,请高手指点一下!
...全文
76 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
anly_hz 2009-12-02
  • 打赏
  • 举报
回复
每个客户端连进来之前都肯定要给他们分配用户名和密码,对不同的客户端做不同的操作,连进来的时候都是不同的连接,服务器跟客户端始终是在这个链路上通信,除非连接断开了,所以不存在“不知道向哪个客户端发送信息”的问题啊
gao11811 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xjpshh 的回复:]
楼上的意思是说服务器端监听到客服端请求以后创建一个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在进行通信,这样好不好?
[/Quote]

其实就是这样的,原理就是在服务器端维护建立的所有连接(socket,随便用什么集合封装,方便维护就行),然后对信息的处理就按照实际需求
xjpshh 2009-12-02
  • 打赏
  • 举报
回复
楼上的意思是说服务器端监听到客服端请求以后创建一个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在进行通信,这样好不好?
捏造的信仰 2009-12-02
  • 打赏
  • 举报
回复
每个客户端都会有自己的 Socket 对象,这个判断起来很麻烦吗?

Map<String, Socket> clients = new HashMap<String, Socket>();
clients.put("user1", sck1);
...
MashiMaro_001 2009-12-02
  • 打赏
  • 举报
回复
客户端跟服务端建立一次连接后,服务端会一直跟跟客户端保持通讯,只要连接没有断开,服务端会一直跟该客户端保持通讯

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧