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

📄 socket_client.java.bak

📁 java开发的聊天程序
💻 BAK
字号:
/**/www.wxosit.com  无锡蓝点世纪顶级JAVA培训中心
//0510-82712155   82721766
//这是本人(陈正阳)的初级课程设计之一
//实现了私人聊天和群聊
//先启动服务器 
//然后启动多个客户端*/
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JComboBox;
import javax.swing.JRadioButton;
import javax.swing.JRadioButton;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.util.StringTokenizer;

import java.net.Socket;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
class Str
{
	public static final String info="INFO";
	public static final String msg="MSG";
	public static final String sl="SL";
}

class Client_Swing extends JFrame implements ActionListener
{
	PrintWriter print=null;
	PrintWriter print_msg=null;
	PrintWriter print_sgl=null;
	Socket socket=null;
	
	JPanel panel_NORTH;
	JPanel panel_EAST;
	JPanel panel_SOUTH;
	JPanel panel_CENTER;
	JLabel label;
	JButton button_info;
	JButton button_msg;
	JTextField textfield;
	JTextField textfield_msg;
	JComboBox box_info;
    JTextArea msg;
	JButton button_single; 
	JRadioButton radio;
	Client_Swing()
	{
		super("聊天程序");
		label=new JLabel("用户名");
		button_info=new JButton("连接");
		button_info.addActionListener(this);
		textfield=new JTextField(15);
		textfield_msg=new JTextField(15);
		radio=new JRadioButton("私聊");
		radio.addActionListener(this);
		button_msg=new JButton("发送");
		button_msg.addActionListener(this);
		//button_single=new JButton("私聊");
		//button_single.addActionListener(this);
		box_info=new JComboBox();
		msg=new JTextArea(11,20);
		panel_NORTH=new JPanel();
		this.getContentPane().add(panel_NORTH,BorderLayout.NORTH);
		panel_NORTH.add(label);
		panel_NORTH.add(textfield);
		panel_NORTH.add(button_info);
		panel_EAST=new JPanel();
	    this.getContentPane().add(panel_EAST,BorderLayout.EAST);
	    panel_EAST.add(box_info);
		panel_SOUTH=new JPanel();
		this.getContentPane().add(panel_SOUTH,BorderLayout.SOUTH);
		panel_SOUTH.add(textfield_msg);
		panel_SOUTH.add(button_msg);
		//panel_SOUTH.add(button_single);
		panel_SOUTH.add(radio);
		
		panel_CENTER=new JPanel();
		this.getContentPane().add(panel_CENTER,BorderLayout.CENTER);
		panel_CENTER.add(msg);
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if(e.getActionCommand().equals("连接"))
		{
			try
			{
				socket=new Socket("LocalHost",6000);
			    String client_info=Str.info+":"+textfield.getText()+":"+socket.getLocalAddress().getHostAddress();
			    print=new PrintWriter(socket.getOutputStream());
			    print.println(client_info);
			    print.flush();
			    Client_Thread ct=new Client_Thread(socket,this);
			    ct.start();
			}
			catch(Exception o)
			{
				
			}

		}
		
		if(e.getActionCommand().equals("发送"))
		{
			if(radio.isSelected()==true)
			{
				try
			    {
			    	String msg_sgl=Str.sl+":"+textfield_msg.getText()+":"+box_info.getSelectedItem();
				    ////System.out.println(msg_sgl);
				    print_sgl=new PrintWriter(socket.getOutputStream());
				    print_sgl.println(msg_sgl);
				    print_sgl.flush();
			    }
			    catch(Exception p)
			    {
				
			    }
			}
			else
			{
				try
			    {
			    	print_msg=new PrintWriter(socket.getOutputStream());
			        String client_msg=Str.msg+":"+textfield_msg.getText();
			        print_msg.println(client_msg);
			        print_msg.flush();
			        //System.out.println(client_msg);
			    }
			    catch(Exception u)
			    {
				
			    }
			}


		}
		
		/*if(e.getActionCommand().equals("私聊"))
		{
			try
			{
				
				String msg_sgl=Str.sl+":"+textfield_msg.getText()+":"+box_info.getSelectedItem();
				//System.out.println(msg_sgl);
				print_sgl=new PrintWriter(socket.getOutputStream());
				print_sgl.println(msg_sgl);
				print_sgl.flush();
			}
			catch(Exception p)
			{
				
			}
		}*/
	}
	
}

class Client_Thread extends Thread
{
	Socket socket;
	Client_Swing swing;
	String message;
	Client_Thread(Socket socket,Client_Swing swing)
	{
		this.socket=socket;
		this.swing=swing;
	}

	public void run()
	{
		while(true)
		{
			try{
				BufferedReader buffer=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			    message=buffer.readLine();
			    System.out.println(message);
			    StringTokenizer strtok=new StringTokenizer(message,":");
			    String pop=strtok.nextToken();
			    System.out.println(pop);
			    if(pop.equals("people"))
			    {
			    	swing.box_info.removeAllItems();
			        while(strtok.hasMoreTokens())
			        {
			        	String str=strtok.nextToken();
			            swing.box_info.addItem(str);
			        }
			    }
			    if(pop.equals("MSG"))
			    {
                    String str=strtok.nextToken();   
			    	swing.msg.append(str+"\n");
			    }
			    if(pop.equals("SL"))
			    {
			    	String desk=strtok.nextToken();
			    	swing.msg.append(desk+"\n");
			    }
		    }
		    catch(Exception e)
		    {
			
		    }
		}
	}
}

class Client
{
	public static void main(String args[])
	{
		Client_Swing frame=new Client_Swing();
		frame.setSize(500,300);
		frame.setVisible(true);
	}
}

⌨️ 快捷键说明

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