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

📄 server.java

📁 可以实现一对一
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import java.io.*;

public class Server extends JFrame
{
	String str,ip,mark1,anothername,words,updata,waring;
	JPanel pane;
	List list;
	String[] name=new String[30];
	String[] ipp=new String[30];

	Container con=this.getContentPane();
	DatagramSocket ds1,ds2,ds3,ds4,ds5,ds6;
	public Server()
	{
		super("Server1.0");
		setSize(640,480);
		for(int j=0;j<30;j++)
	    {
		    name[j]=null;
		    ipp[j]=null;
	    }
		pane=new JPanel();
		list=new List(1);
		list.setFont(new Font("黑体", Font.BOLD, 15));
	    JScrollPane scr1 = new JScrollPane(list);
		scr1.setPreferredSize(new Dimension(620,440));
		pane.add(scr1);
		con.add(pane);
		
		setLocation(200,150);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		show();
///////////////////////////////////////////////////////	
		try
		{
			ds2=new DatagramSocket(8000);//接收信息
			ds1=new DatagramSocket();
			ds4=new DatagramSocket(8500);//接收信息注册
			ds3=new DatagramSocket();
			ds6=new DatagramSocket(9500);//接收信息更新
			ds5=new DatagramSocket();
		}
		catch(Exception e)
		{
		   	System.out.println(e);
		}
		new Thread(new Runnable()
		{
			public void run()
			{
				byte buf[]=new byte[1024];
				DatagramPacket dp2=new DatagramPacket(buf,1024);
				DatagramPacket dp1;
				while(true)
				{
					synchronized("a")
					{
					try
					{
////////////////////////////////////////////////////////////接收信息					
						ds2.receive(dp2);
						str=new String(buf,0,dp2.getLength());
						
						int k=str.indexOf(' ');
						anothername=str.substring(0,k);
						words=str.substring(k);
						
						ip=comparename(anothername);
						anothername=compareip(dp2.getAddress().getHostAddress());
						str=anothername+"对"+str.substring(0,k)+"说:"+words;
						list.add(str+"        from:"+dp2.getAddress().getHostAddress()+"to:"+ip,0);
////////////////////////////////////////////////////////////接收完毕						
////////////////////////////////////////////////////////////发送信息						
		                dp1=new DatagramPacket(str.getBytes(),str.getBytes().length,InetAddress.getByName(ip),8001);
                        ds1.send(dp1);
////////////////////////////////////////////////////////////发送完毕                        
					}
					catch(Exception e2)
		            {
		   	            System.out.println(e2);
		            }
		            }
				}
			}
		}).start();
///////////////////////////////////////////////////////////注册线程
        new Thread(new Runnable()
		{
			public void run()
			{
				byte buf[]=new byte[1024];
				DatagramPacket dp4=new DatagramPacket(buf,1024);
				DatagramPacket dp3;
				while(true)
				{
					synchronized("b")
					{
					try
					{
////////////////////////////////////////////////////////////接收信息注册					
						ds4.receive(dp4);
						str=new String(buf,0,dp4.getLength());
						ip=dp4.getAddress().getHostAddress();
						list.add(str+":from"+ip,0);
////////////////////////////////////////////////////////////接收完毕注册						
////////////////////////////////////////////////////////////发送信息注册						
		                mark1=compare(str,ip);
		                dp3=new DatagramPacket(mark1.getBytes(),mark1.getBytes().length,InetAddress.getByName(ip),8501);
                        ds3.send(dp3);
////////////////////////////////////////////////////////////发送完毕 注册                       
					}
					catch(Exception e4)
		            {
		   	            System.out.println(e4);
		            }
		            }
				}
			}
		}).start();		
///////////////////////////////////////////////////////////更新线程
        new Thread(new Runnable()
		{
			public void run()
			{
				byte buf[]=new byte[1024];
				DatagramPacket dp6=new DatagramPacket(buf,1024);
				DatagramPacket dp5;
				while(true)
				{
					synchronized("c")
					{
					try
					{
////////////////////////////////////////////////////////////接收信息更新					
						ds6.receive(dp6);
						str=new String(buf,0,dp6.getLength());
						if(str.equals("OK"))
						{
							updata=updatasend();
							waring=compareip(dp6.getAddress().getHostAddress())+"上线了!";
							list.add("列表更新"+str,0);
							System.out.println("列表更新"+str);
						}
						else if(str.equals("EXIT"))
						{
							datamodify(dp6.getAddress().getHostAddress());
							list.add("列表更新"+str,0);
							System.out.println("列表更新"+str);
							waring=compareip(dp6.getAddress().getHostAddress())+"悄悄地走了!";
							updata=updatasend();
						}
						else
						{
							waring=compareip(dp6.getAddress().getHostAddress())+"非法操作!";
						}
////////////////////////////////////////////////////////////接收完毕更新						
////////////////////////////////////////////////////////////发送信息更新						
		                dp5=new DatagramPacket(waring.getBytes(),waring.getBytes().length,InetAddress.getByName("127.0.0.1"),8001);
		                ds5.send(dp5);
		                dp5=new DatagramPacket(updata.getBytes(),updata.getBytes().length,InetAddress.getByName("127.0.0.1"),9501);
                        ds5.send(dp5);
////////////////////////////////////////////////////////////发送完毕更新                       
					}
					catch(Exception e)
		            {
		   	            e.printStackTrace();
		            }
		            }
				}
			}
		}).start();		
	}
////////////////////////////////////////////////////////////
	public static void main(String[] args)
	{
		new Server();
	}
	public String compare(String str,String ip)
	{
		String bool="";
		for (int i=0;i<30;i++)
		{	
		    if (name[i]==null)
		    {
		    	name[i]=str;
		    	ipp[i]=ip;
		    	list.add(name[i]+"已经连接",0);
		    	bool="true";
		    	break;
		    }
		    else if(name[i].equals(str))
		    {
			    list.add(str+"连接失败",0);
			    bool="false";
			    break;
		    }
		    else
		    {
		    	bool="false";
		    }
		}
		return bool;
	}
	public String comparename(String anothername)
	{
		String ipall="";
		for (int i=0;i<30;i++)
		{
			if(name[i].equals(anothername))
			{
				ipall=ipp[i];
				break;
			}
			else if(anothername.equals("所有人"))
			{
				ipall="127.0.0.1";
				break;
			}	
		}
		return ipall;
	}
	public String compareip(String ippp)
	{
		String nameall="";
		for (int i3=0;i3<30;i3++)
		{
			if(ipp[i3].equals(ippp))
			{
				nameall=name[i3];
				break;
			}
			else
			{
				nameall="所有人";
			}	
		}
		return nameall;
	}
	public String updatasend()
	{
		String data="所有人 ";
		for (int i=0;i<30;i++)
		{
		    if(name[i]==null)
			{
				list.add(name[i]);
				break;
			}
			data=data+name[i]+" ";	
		}
		return data;
	}
	public void datamodify(String ip)
	{
		for (int i=0;i<30;)
		{
			if(ipp[i].equals(ip))
			{
				for(;i<29;)
				{
					ipp[i]=ipp[i+1];
				    name[i]=name[i+1];
				    i++;
				}
				ipp[i]=null;
				name[i]=null;
			}
			i++;	
		}
	}
}

⌨️ 快捷键说明

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