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

📄 socket_server.java

📁 java开发的聊天程序
💻 JAVA
字号:
import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;

import java.util.StringTokenizer;
import java.util.ArrayList;
import java.util.Iterator;
class People
{
	public static final String people="people"; 
}

class Server
{
	public static ArrayList list=new ArrayList();
	public static void main(String args[])
	{
		try
		{
			 ServerSocket server=new ServerSocket(6000);
			 System.out.println("Server is beginning......");
		     while(true)
		     {
		     	Socket socket=server.accept();
			    Server_Thread serverthread=new Server_Thread(socket);
			    list.add(serverthread);
			    serverthread.start();
		     }
		}
		catch(Exception e)
		{
			
		}
		
	}
}

class Server_Thread extends Thread
{
	Socket socket;
	BufferedReader buffer;
	BufferedReader reader_msg;
	String message;
	String name_sgl;
	String name;
	String ip;
	StringBuffer info=new StringBuffer();
	Server_Thread(Socket socket)
	{
		this.socket=socket;
		try{
			buffer=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			message=buffer.readLine();
			System.out.println("端口:"+socket.getPort());
			System.out.println(message);
			StringTokenizer strtok=new StringTokenizer(message,":");
			String aa=strtok.nextToken();
			while(strtok.hasMoreTokens())
			{
				name=strtok.nextToken();
				ip=strtok.nextToken();
			}
			info=info.append(People.people);
		}
		catch(Exception e)
		{
			
		}
	}
	
	public void run()
	{
		try{
			
		    //System.out.println(info);
		    Iterator iter=Server.list.iterator();
		    while(iter.hasNext())
		    {
		    	String bb=((Server_Thread)iter.next()).name;
		    	System.out.println(bb);
			    info.append(":"+bb);
		    }
		    System.out.println(info);
		
		    Iterator it=Server.list.iterator();
		    while(it.hasNext())
		    {
		    	Socket cc=((Server_Thread)it.next()).socket;
			    PrintWriter print=new PrintWriter(cc.getOutputStream());
			    print.println(info);
			    print.flush();
		    }
		    
		    while(true)
		    {
		    	reader_msg=new BufferedReader(new InputStreamReader(socket.getInputStream()));
		    	String msg=reader_msg.readLine();
		    	System.out.println(msg);
		    	StringTokenizer sk=new StringTokenizer(msg,":");
		    	String temp=sk.nextToken();
		    	if(temp.equals("SL"))
		    	{
		    		while(sk.hasMoreTokens())
		    		{
		    			String message_sgl=sk.nextToken();
		    			name_sgl=sk.nextToken();
		    		}
		    		Iterator i=Server.list.iterator();
		    		while(i.hasNext())
		    		{
		    			Server_Thread thread=(Server_Thread)i.next();
		    			String ee=thread.name;
		    			Socket yy=thread.socket;
		    			if(name_sgl.equals(ee))
		    			{
		    				PrintWriter print_sgl=new PrintWriter(yy.getOutputStream());
		    				print_sgl.println(msg);
		    				print_sgl.flush();
		    				System.out.println("true");
		    				System.out.println(msg);
		    			}
		    		}
		    		
		    	}
		    	if(temp.equals("MSG"))
		    	{
		    		Iterator itor=Server.list.iterator();
		    	    while(itor.hasNext())
		    	    {
		    		    Socket bb=((Server_Thread)itor.next()).socket;
		    		    PrintWriter print_msg=new PrintWriter(bb.getOutputStream());
		    		    print_msg.println(msg);
		    		    print_msg.flush();
		    	    }
		            System.out.println(msg);
		    	}

		    }
		}
		catch(Exception e)
		{
			
		}

	}
}

⌨️ 快捷键说明

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