?????????????????????:
/**
* @author notifier
* @create 2010-9-25 ????07:06:54
* @version 1.0
*/
public class SimpleChatServer
{
// ?????????б?
private ArrayList clientList = new ArrayList();;
public static void main(String[] args)
{
new SimpleChatServer().startUp();
}
/**
* ???????????????
*
*/
public void startUp()
{
try
{
// ????????????ServerSocket?????????????5000
ServerSocket serverSocket = new ServerSocket(5000);
// ???????????????
while(true)
{
// ????????????????????????;??????????????????????????socket????
Socket clientSocket = serverSocket.accept();
// ????????????б???
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
clientList.add(writer);
// ????ClientHandler???????socket???????
Thread t = new Thread(new ClientHandler(clientSocket));
t.start();
System.out.println("??Client??????");
}
}catch(Exception e)
{
e.printStackTrace();
}
}
/**
* ?????????? ???????:
* 1.????????????????
* 2.?????????????????
* @author sdniu
* @create 2010-9-26 ????10:00:18
* @version 1.0
*/
public class ClientHandler implements Runnable
{
private BufferedReader reader;
private Socket socket;
/**
* ClientHandler???????
* @param clientSocket
*/
public ClientHandler(Socket clientSocket)
{
try
{
// ???socket????
socket = clientSocket;
// ????????????????
InputStreamReader isReader = new InputStreamReader(socket.getInputStream());
reader = new BufferedReader(isReader);
} catch (IOException e)
{
e.printStackTrace();
}
}
public void run()
{
String message;
try
{
while((message = reader.readLine()) != null)
{
System.out.println("????????: " + message);
// ?????????????????????п????
notifyAllClients(message);
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
/**
*
* @param message
*/
public void notifyAllClients(String message)
{
// ?????????б??????????????? Iterator it = clientList.iterator();
Iterator it = clientList.iterator();
while(it.hasNext())
{
try
{
// ?????Iterator??????????????PrintWriter
PrintWriter writer = (PrintWriter) it.next();
writer.println(message);
writer.flush();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}
????8.???????Socket????????? ????????? ????????????? ????????:
????http://files.cnblogs.com/notifier/SimpleChatroom.7z