java+flex網頁聊天(1)

服務端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)//客戶端斷開,關閉套接字,在線人數減一
{

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章