📄 socketclient.java
字号:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SocketClient extends JFrame
{
JPanel contentPane;
JScrollPane scrollPane = new JScrollPane();
JTextArea textArea = new JTextArea();
JTextField textField = new JTextField();
JButton connButton = new JButton();
JButton sendButton = new JButton();
JButton quitButton= new JButton();
Socket socket;
BufferedReader bufferedReader;
PrintWriter printWriter;
public SocketClient() {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
scrollPane.setBounds(new Rectangle(10, 5, 381, 147));
textArea.setText("");
textField.setText("");
textField.setBounds(new Rectangle(12, 162, 375, 32));
connButton.setBounds(new Rectangle(7, 205, 84, 25));
connButton.setText("连接");
sendButton.setBounds(new Rectangle(113, 206, 96, 24));
sendButton.setEnabled(false);
sendButton.setFocusPainted(true);
sendButton.setText("发送");
quitButton.setBounds(new Rectangle(226, 208, 103, 22));
quitButton.setText("退出");
contentPane.add(scrollPane, null);
contentPane.add(textField, null);
contentPane.add(connButton, null);
contentPane.add(sendButton, null);
contentPane.add(quitButton, null);
scrollPane.getViewport().add(textArea, null);
//内部定义事件
connButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
Connect conn=new Connect();
new Thread(conn).start();
}
});
sendButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
printWriter.println(textField.getText());
printWriter.flush();
textArea.append("客户端信息:"+textField.getText()+"\n");
textField.setText("");
}
});
quitButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
try{
printWriter.println("客户端退出!");
printWriter.flush();
}
catch(Exception e1)
{
textArea.append(e1.toString()+"\n");
}
finally{System.exit(0);}
}
});
}
private class Connect implements Runnable
{
public void run()
{
try{socket=new Socket("localhost",4331);
bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
printWriter=new PrintWriter(socket.getOutputStream());
sendButton.setEnabled(true);
GetInfo getinfo=new GetInfo();
Thread t=new Thread(getinfo);
t.start();
textArea.append("客户端已加入!\n");
connButton.setEnabled(false);
}
catch(Exception e)
{textArea.append(e.toString()+"\n"); }
}
}
//定义类接受消息
private class GetInfo implements Runnable
{
public void run()
{
String str;
try {
str = bufferedReader.readLine(); //从bufferedReader读入一行
while (str != "客户端退出!")
{
textArea.append("客户端信息:" + str + "\n");
str = bufferedReader.readLine(); //继续读入客户端信息
}
bufferedReader.close(); //关闭缓冲区
printWriter.close();
socket.close(); //关闭socket
}
catch (Exception e)
{
sendButton.setEnabled(false);
textArea.append(e.toString() + "\n");
}
}
}
public static void main(String[] args){
SocketClient client=new SocketClient();
client.setTitle("客户端");
client.setSize(400,300);
client.setVisible(true);
client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -