importjava.io.IOException;importjava.net.ServerSocket;public classTCPServer
{static int acount = 0;public static voidmain(String[] args)
{try{
ServerSocket serverSocket= new ServerSocket(8638);while (true)new Thread(new MultiClient(serverSocket.accept(), ++acount))
.start();
}catch(IOException e)
{
e.printStackTrace();
}
}
}importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.IOException;importjava.net.Socket;importjava.util.Date;public class MultiClient implementsRunnable
{privateSocket client;private intacount;private BufferedInputStream bi = null;private BufferedOutputStream bo = null;public MultiClient(Socket client, intacount)
{this.client =client;this.acount =acount;
}
@Overridepublic voidrun()
{try{
Date start= newDate();
String recordStart= start + " :: "
+ client.getInetAddress().getHostAddress() + " :: 第"
+ acount + "用户成功连接";
System.out.println(recordStart);
WriteLog.writeLog(recordStart);
bi= newBufferedInputStream(client.getInputStream());
BufferedOutputStream bo= newBufferedOutputStream(
client.getOutputStream());while (true)
{byte[] buf = new byte[1024];int len =bi.read(buf);
String info= new String(buf, 0, len);
System.out.println(info);
bo.write(("Has Receive:" +info).getBytes());
bo.flush();if (info.equals("quit"))break;
}
Date end= newDate();
String recordEnd= end + " :: "
+ client.getInetAddress().getHostAddress() + " :: 第"
+ acount + "用户退出连接";
System.out.println(recordEnd);
WriteLog.writeLog(recordEnd);
}catch(Exception e)
{
e.printStackTrace();
}finally{try{if (bi != null)
bi.close();if (bo != null)
bo.close();if (client != null)
client.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
}importjava.io.File;importjava.io.FileWriter;public classWriteLog
{public static voidwriteLog(String str)
{
File logFile= new File("server-log.txt");try{
FileWriter out= new FileWriter(logFile, true);
out.append(str+ '\n');
out.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}