服务器:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class Server {
private ServerSocket server;
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
private JTextArea ta = new JTextArea();
private JTextField tf = new JTextField();
private boolean one;
public Server(){
JFrame jf=new JFrame("客户机");
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(ta);
Container c = jf.getContentPane();
c.add(scrollPane);
c.add(tf, "South");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(300, 300);
jf.setVisible(true);
}
private void goserver() {
try {
server = new ServerSocket(8998);
ta.append("创建服务器套接字"+"\n");
while (true) {
ta.append("等待与客户机的连接......"+"\n");
socket = server.accept();
ta.append("连接到客户机"+"\n"+"\n");
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
getKehujiMessage();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void getKehujiMessage() {
try {
while (true) {
if (reader.ready()) {
ta.append("客户机:"+reader.readLine().trim()+"\n");
huoqu();
}
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (reader != null) {
reader.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void huoqu() {
tf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
writer = new PrintWriter(socket.getOutputStream(), true);
if (tf.getText()!="") {
if (!one) {
writer.println(tf.getText().trim());
ta.append("服务器:"+tf.getText().trim()+"\n");
one=true;
}
}
} catch (Exception e2) {
e2.printStackTrace();
}
tf.setText("");
}
});
one=false;
}
public static void main(String[] args) {
new Server().goserver();
}
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class Kehuji extends JFrame {
private Socket socket;
private JTextArea ta = new JTextArea();
private JTextField tf = new JTextField();
private Container cc;
private BufferedReader reader;
private PrintWriter writer;
jianting jt=new jianting();
public Kehuji(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cc = this.getContentPane();
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(ta);
cc.add(scrollPane);
cc.add(tf, "South");
tf.addActionListener(jt);
}
private void connect() {
ta.append("尝试连接服务器......\n");
try {
socket = new Socket("127.0.0.1", 8998);
writer = new PrintWriter(socket.getOutputStream(), true);
ta.append("连接到服务器\n"+"\n");
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
getServerMessage();
} catch (Exception e) {
e.printStackTrace();
}
}
private void getServerMessage() {
try {
while (true) {
if (reader.ready()) {
ta.append("服务器:"+reader.readLine().trim()+"\n");
tf.addActionListener(jt);
}
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (reader != null) {
reader.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
class jianting implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
if (tf.getText()!="") {
writer.println(tf.getText().trim());
ta.append("客户机:"+tf.getText().trim()+"\n");
}
} catch (Exception e2) {
e2.printStackTrace();
}
tf.setText("");
tf.removeActionListener(jt);
}
}
public static void main(String[] args) {
Kehuji MyKehuji = new Kehuji("服务器");
MyKehuji.setBounds(1000, 0, 300, 300);
MyKehuji.setVisible(true);
MyKehuji.connect();
}
}
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class Server {
private ServerSocket server;
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
private JTextArea ta = new JTextArea();
private JTextField tf = new JTextField();
private boolean one;
public Server(){
JFrame jf=new JFrame("客户机");
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(ta);
Container c = jf.getContentPane();
c.add(scrollPane);
c.add(tf, "South");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(300, 300);
jf.setVisible(true);
}
private void goserver() {
try {
server = new ServerSocket(8998);
ta.append("创建服务器套接字"+"\n");
while (true) {
ta.append("等待与客户机的连接......"+"\n");
socket = server.accept();
ta.append("连接到客户机"+"\n"+"\n");
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
getKehujiMessage();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void getKehujiMessage() {
try {
while (true) {
if (reader.ready()) {
ta.append("客户机:"+reader.readLine().trim()+"\n");
huoqu();
}
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (reader != null) {
reader.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void huoqu() {
tf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
writer = new PrintWriter(socket.getOutputStream(), true);
if (tf.getText()!="") {
if (!one) {
writer.println(tf.getText().trim());
ta.append("服务器:"+tf.getText().trim()+"\n");
one=true;
}
}
} catch (Exception e2) {
e2.printStackTrace();
}
tf.setText("");
}
});
one=false;
}
public static void main(String[] args) {
new Server().goserver();
}
}
客户机:import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
public class Kehuji extends JFrame {
private Socket socket;
private JTextArea ta = new JTextArea();
private JTextField tf = new JTextField();
private Container cc;
private BufferedReader reader;
private PrintWriter writer;
jianting jt=new jianting();
public Kehuji(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cc = this.getContentPane();
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(ta);
cc.add(scrollPane);
cc.add(tf, "South");
tf.addActionListener(jt);
}
private void connect() {
ta.append("尝试连接服务器......\n");
try {
socket = new Socket("127.0.0.1", 8998);
writer = new PrintWriter(socket.getOutputStream(), true);
ta.append("连接到服务器\n"+"\n");
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
getServerMessage();
} catch (Exception e) {
e.printStackTrace();
}
}
private void getServerMessage() {
try {
while (true) {
if (reader.ready()) {
ta.append("服务器:"+reader.readLine().trim()+"\n");
tf.addActionListener(jt);
}
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (reader != null) {
reader.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
class jianting implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
if (tf.getText()!="") {
writer.println(tf.getText().trim());
ta.append("客户机:"+tf.getText().trim()+"\n");
}
} catch (Exception e2) {
e2.printStackTrace();
}
tf.setText("");
tf.removeActionListener(jt);
}
}
public static void main(String[] args) {
Kehuji MyKehuji = new Kehuji("服务器");
MyKehuji.setBounds(1000, 0, 300, 300);
MyKehuji.setVisible(true);
MyKehuji.connect();
}
}