package cn.tted.ChatBox;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
/**
* 用于定义一个服务器类,实现服务器端接收与发送功能。
*
* @version 01.00 2012-8-28 guzhaocheng
* @author gu zhaocheng
*/
public class Server
{
public static void main(String[] args) throws IOException
{
ServerSocket server = null;
Socket client;
ArrayList<Socket> c = new ArrayList<Socket>();
server = new ServerSocket(4800);
Boolean listening = true;
while(listening)
{
try
{
client = server.accept();
c.add(client);
System.out.println("server started");
BufferedReader sin = new BufferedReader(new InputStreamReader(client.getInputStream()));
new IOThread(c, sin, client).start();
}
catch(IOException e)
{
System.out.println("started failed");
}
}
}
}
/**
* 用于定义一个读写交互线程。
*
* @version 01.00 2012-8-28 guzhaocheng
* @author gu zhaocheng
*/
class IOThread extends Thread
{
BufferedReader sin = null;
PrintWriter sout = null;
Socket client;
ArrayList<Socket> c;
String name;
public IOThread (ArrayList<Socket> c, BufferedReader sin, Socket client)
{
this.sin = sin;
this.client = client;
this.c = c;
}
/**
* 线程的run执行方法,实现服务端与客户端的读写交互
*/
public void run()
{
while(true)
{
String smsg = null;
try
{
smsg = sin.readLine();
}
catch(IOException e)
{
e.printStackTrace();
}
if(smsg != null)
for(int i = 0; i < c.size(); i++)
{
Socket eachClient = (Socket)(c.get(i));
try
{
sout = new PrintWriter(eachClient.getOutputStream());
System.out.println("receive" + smsg);
sout.println(smsg);
}
catch(IOException e)
{
e.printStackTrace();
}
sout.flush();
}
}
}
}
java聊天室 提交预版 服务器
最新推荐文章于 2024-06-15 23:08:53 发布