⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fiveserver.java

📁 flash 聊天服务器和客户端的实现server为java实现
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import java.util.*;
public class FiveServer
{
	public static void main(String[] args) 
	{
		ServerSocket socket = null;
		Vector m_threads = new Vector();
		//Vector street_info=new Vector();
		System.out.println("listen....");
		try{
			socket = new ServerSocket(9000);
		}
		catch(Exception e){ System.out.println("new serversocket() failed"); return;}
		try
		{
			int nid=0;
			while(true)
			{
				Socket s =socket.accept();
				System.out.println("accepted");
				
				ServerThread st = new ServerThread(s,m_threads);
				st.setID(nid++);
				m_threads.addElement(st);
				new Thread(st).start();
				System.out.println("listen again.........."+m_threads.size());
				if(m_threads.isEmpty()) System.out.println("no user on line");
			}
		}catch(Exception e)
		{
			System.out.println("server is down....");
		}
	}
}

class ServerThread extends Thread
{
	Vector m_threads;
	Socket m_socket = null;
	DataInputStream m_in =null;
	PrintStream m_out = null;
	int m_nid;
	String nickname;
	public ServerThread(Socket s ,Vector threads)
	{
		m_socket= s;
		m_threads=threads;
	

	try{
		m_in = new DataInputStream(m_socket.getInputStream());
		m_out = new PrintStream(m_socket.getOutputStream());
	}
	catch(Exception e)
		{
		}
	}
	public void run() 
	{
		String str="1";
		System.out.println("thread "+m_nid+" is running........");
		try{
			String s=m_in.readLine();//取出该线程控制的人物呢称
			int start=s.indexOf("login&");
			int endpos=s.indexOf("&login");
			if(start!=-1&&endpos!=-1)
			{ str=s.substring(start+6,endpos);
			  this.nickname=str;//昵称
			}
			for(int i=0;i<m_threads.size();i++)
					{
				ServerThread st = (ServerThread)m_threads.elementAt(i);
					st.write(s);
					st.write("00000\n\0");
					}
			System.out.println(nickname);
			while(true)//登录成功
			{
				//System.out.println(m_nid+"*"+streetid+" .... "+m_threads.toString());
			s=m_in.readLine();//读入信息流中的信息
			if(s==null||s=="") break;
			if(s.indexOf("echo&")!=-1||s.indexOf("request&")!=-1||s.indexOf("chess&")!=-1||s.indexOf("random&")!=-1)
				{

				for(int i=0;i<m_threads.size();i++)
					{
				ServerThread st = (ServerThread)m_threads.elementAt(i);
				if(s.indexOf(st.nickname)!=-1)//转发给目的用户。
						{
					st.write(s);
					st.write("00000\n\0");
					
						}
					}
				}
				else if(s.indexOf("dialog&")!=-1&&s.indexOf("all&")==-1)
				{
					for(int i=0;i<m_threads.size();i++)
					{
				    ServerThread st = (ServerThread)m_threads.elementAt(i);
				    if(s.indexOf(st.nickname+"&")!=-1||st.nickname==nickname)//私聊,转发给与自己对棋用户和自己
						{
					st.write(s);
					st.write("00000\n\0");
					
						}
					}
				}
				else
				{
					for(int i=0;i<m_threads.size();i++)
					{
				ServerThread st = (ServerThread)m_threads.elementAt(i);
					st.write(s);
					st.write("00000\n\0");
					}
				}

				System.out.println(s);
			}
		}
		catch(Exception e){ e.printStackTrace();}
		m_threads.removeElement(this);//从向量表里删除该对象
		try
		{
			   str="02"+"&"+"02"+"&"+nickname+"&"+"\0";
			   for(int i=0;i<m_threads.size();i++)//向每个客户端发退出信息
				{
				ServerThread st = (ServerThread)m_threads.elementAt(i);
				
					st.write(str);
					st.write(str);
					
				}
				//System.out.println(str);
			m_socket.close();
		}
		catch(Exception e){}
	}

	public void write(String msg) throws IOException
	{
		synchronized(m_out)
		{
			try
			{
				m_out.println(msg);
			}
			catch (Exception e){}
		}
	}

	public int getID()
	{
		return m_nid;
	}
	public void setID(int nid)
	{
		m_nid=nid;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -