日期:2014-05-20  浏览次数:20841 次

java socket 如何实现客户端和服务器端不停地自由发送信息?
socket通信的一些基本东西我都知道
比如我已经可以实现从客户端发送一条信息给服务器端然后服务器端在接收到客户端的信息后再返回给客户端一条确认信息

但这发送一次信息后就结束了

我想让客户端和服务器端可以来回互发信息  就像qq两个人聊天那样
怎么实现?


谢谢了
java socket

------解决方案--------------------
package com.softeem.java1307se.net.many2many;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

/**
 * 多对多 服务器
 * 
 *
 */
public class M2MServer {

//用户集合
private static ArrayList<Socket> list = new ArrayList<Socket>();

public static void main(String[] args) {

//上线用户
Socket s = null;

//用户 
String ip = null;

try {

//构建服务器对象
ServerSocket ss = new ServerSocket(1234);

//构建 用户集合
list = new ArrayList<Socket>();

System.out.println("服务器准备就绪 ...");

//循环监听
while(true){

//上线用户
s = ss.accept();

//上线的人都添加到 集合中
list.add(s);

//获取 Socket IP
ip = s.getInetAddress().getHostAddress();
System.err.println( ip + " 用户上线了 , 当前在线用户为: " + list.size() + "人 !" );

//构建 发送信息线程
M2MSend send = new M2MSend(s);
send.start();

}

} catch (IOException e) {
//用户下线
list.remove(s);
System.err.println(ip + " 已下线 , 当前在线人数为: " + list.size() + " 人 !");
}

}

public static ArrayList<Socket> getList() {
return list;
}

public static void setList(ArrayList<Socket> list) {
M2MServer.list = list;
}



}