解决方案 »

  1.   

    1:在线验证 服务器发一个信息下来客户端 client收到就马上发相应的应答指令给server server如果在发出后一定时间内(一般是几秒钟)没有收到回复 就证明client已断线 这里更适合UDP协议 因为如果TCP/IP协议的话 server直接监控read方法是否有connect reset就行啦!具体实现过程看API
    2:客户端之间通讯 在通讯建立之前一定要通过服务器作为中介 如A要和B通信 A先告诉server要与B通信 并通过server将A的IP port告诉B 让B在A建立serversocket前建立clientsocket 之后就是可以摆脱server两个服务器进行通讯啦!
    其实另一种方法就是没有不用单独建立服务器只要一个app能建立serversocket和clientsocket 这种方法较难 LZ可以想一下 
      

  2.   

    两个客户端想要单独通信,就要服务端辅助进行网络打孔。TCP/UDP都能实现打孔。不过,设计起来太复杂了。在线验证比较好实现,就是写个Timer定时向服务端发送一个数据包就可以了。
      

  3.   

     不太明白。。能不能说仔细一点啊?比如就是客户端A与客户端B进行通信  二者需要怎么样才能通信啊 不会具体应用呢 没试过,想尝试写写可是又不是很清楚,虚心请教
    我将经由服务器转发的做完了  是因为每当有一个客户端连接时我都将socket连接与对应的唯一标识的key 记录在了服务器端 这样服务器端可以做到转发   但那客户端A方面有没有这个记录 他又怎么做到发送给B呢
      

  4.   

    那就需要你的手机程序 既要有server服务监听 又要有正常的socket客户连接 连接时设置对方的服务地址就好
      

  5.   

    sorry 不是手机程序 是你的客户端程序
      

  6.   

    ================================
    apache mina 开源的通信框架。
      

  7.   

    使用UDP  该怎么做呢 
      

  8.   

    你说如果那样的话
    比如说客户端A登陆了 这时候服务器要将A的所有在线好友的监听端口 都一次性得告诉客户端A; 还是当A请求与某人聊天时 服务器再将A需要的客户B端口发送给A啊  。我个人还是觉得后面一种比较好那样的话是不是就可以给陌生人也发送信息了吧,就不用限定只能是好友了???
      

  9.   

    A要和B进行通信 是不是A告诉服务器它要和B通信  然后服务器将B的ip和端口号告诉A  然后A再给B发送消息 打通连接啊?然后B再给A回复两个人再进行通信交流。看你写的 似乎和我的想法是反的??A要给B发信息 不是A请求连接B吗?
      

  10.   

    我也正在做类似的一个项目。所有用户上线后(程序启动调试),均到服务器端报道。服务器进行端口监听,将端口放在一个Map或者List集合中。将A的消息转发给B,服务器端在集合中搜索出B的端口,分发就OK了。服务器只起到转发消息的作用。