服務端java代碼:
package com;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class Server
{
public Server(){}//構造函數
private ServerSocket serverSocket;//創建服務端套接字
List list = new ArrayList();//創建list用於存儲在線(socket)人數
public static void main(String sdf[])
{
Server server=new Server();
server.startServer();
}
private void startServer()
{
System.out.println("服務端已創建,等待客戶端");
Socket socket=null;
try
{
serverSocket=new ServerSocket(8888);
while(true)
{
socket=serverSocket.accept();//阻塞程序,等待客戶端
System.out.println("客戶端已連接");
list.add(socket);//人數加一
System.out.println("當前連接人數:"+list.size());
//爲每個客戶端新開一個線程
thread t=new thread(socket);
Thread th=new Thread(t);
th.start();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
class thread implements Runnable
{
private Socket socket;
private BufferedReader reader=null;//新建輸入緩衝流
private PrintWriter writer=null;//新建輸出緩衝流
public thread(Socket socket)
{
this.socket=socket;
}
public void run()
{
try
{
reader=new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
writer=new PrintWriter(socket.getOutputStream());
String temp=null;
while((temp=reader.readLine())!=null)//讀取客戶端發送的消息
{
String ip=socket.getInetAddress().toString();//獲得客戶端地址
writer.print("服務端成功接收消息:"+temp+"\n\r");
writer.flush();
System.out.println(ip+"說:"+temp);//打印客戶端消息
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if(reader!=null)
{
try
{
reader.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
if(socket!=null)//客戶端斷開,關閉套接字,在線人數減一
{