📄 socket_client.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 + -