客户端与服务器聊天------服务器端

package week6.serverAndClient;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;

public class Service extends Thread {
private String message;
private static JTextArea area;
private ServerSocket serverSocket;
private static Socket socket;

@Override
public void run() {
try {
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
output.writeUTF("服务器说:欢迎连接服务器!");
// 接受服务区信息
while (true) {
DataInputStream input = new DataInputStream(socket.getInputStream());
message = input.readUTF();
area.append(message);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public Service(int port,JTextArea area) {
this.area=area;
try {
serverSocket = new ServerSocket(port);
socket = serverSocket.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args) {

JFrame frame = new JFrame();
frame.setTitle("服务器");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setBounds(100, 100, 738, 499);
frame.setResizable(false);
Container container = frame.getContentPane();
container.setLayout(null);

area = new JTextArea();// 总聊天框
area.setBounds(37, 20, 647, 275);
container.add(area);
Service service = new Service(9000,area);
service.start();

final JTextField chartField = new JTextField();// 个人信息框
chartField.setBounds(37, 332, 534, 58);
container.add(chartField);
chartField.setColumns(10);

JButton sendBtn = new JButton("发送");// 发送按钮
sendBtn.setBounds(591, 332, 93, 23);
container.add(sendBtn);

sendBtn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
String message = " "+"服务器说:" + chartField.getText();
chartField.setText(null);
area.append(message);
if (message != null) {
try {
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
outputStream.writeUTF(message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});

JButton canelBtn = new JButton("取消");// 取消按钮
canelBtn.setBounds(592, 367, 93, 23);
container.add(canelBtn);
canelBtn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
chartField.setText(null);
}
});

}
}

原文地址:https://www.cnblogs.com/quanby/p/5457139.html