package udp.chatroom;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class TCPServer extends JFrame implements Runnable{
JPanel panel;
final int local_x =400;
final int local_y =400;
final int width =480;
final int height =400;
JTextField tf_msg;
JButton send,disconnect,exit;
JTextArea ta;
JScrollPane jScrollPane;
ServerSocket server;
Socket client;
Thread tt;
BufferedReader reader;
PrintWriter writer;
String temp,msg;
public TCPServer(String ss) {
super(ss);
panel = new JPanel();
panel.add(new JLabel("发送:"));
tf_msg =new JTextField("This is a message", 30);
panel.add(tf_msg);
send =new JButton("发送");
panel.add(send);
send.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// server = new ServerSocket(9999);
// client= server.accept();
writer = new PrintWriter(client.getOutputStream());
msg=""+tf_msg.getText().trim()+"\r\n";
writer.write(msg);
writer.flush();
ta.append("server send: "+msg);
} catch (IOException e1) {
ta.append("error\n");
e1.printStackTrace();
}
}
});
ta = new JTextArea(15, 40);
jScrollPane = new JScrollPane(ta);
panel.add(jScrollPane);
disconnect =new JButton("挂断");
disconnect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
server.close();
} catch (IOException e1) {
ta.append("error\n");
}
}
});
exit =new JButton("退出");
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
panel.add(disconnect);
panel.add(exit);
//
this.add(panel);
//
// tt= new Thread(this);
// tt.start();
this.setVisible(false);
this.setBounds(local_x, local_y, width, height);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
TCPServer tcpServer= new TCPServer("Chat Room Server");
new Thread(tcpServer).start();
}
@Override
public void run() {
try {
try {
server = new ServerSocket(9999);
client= server.accept();
} catch (IOException e) {
e.printStackTrace();
}
if (client!= null) {
ta.append(client.getLocalAddress()+":"+client.getLocalPort() +" connected."+"\n");
}
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
while ((temp = reader.readLine())!=null) {
ta.append("server receive: "+temp+"\n");
}
// reader.close();
} catch (IOException e) {
ta.append("error\n");
}
}
}
package udp.chatroom;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class TCPClient extends JFrame implements Runnable{
JPanel panel;
final int local_x =400;
final int local_y =400;
final int width =480;
final int height =400;
JTextField tf_host,tf_msg,tf_port;
JButton send,connect,exit;
JTextArea ta;
JScrollPane jScrollPane;
ServerSocket server;
Socket client;
Thread tt;
BufferedReader reader;
PrintWriter writer;
String temp,msg;
public TCPClient(String ss) {
super(ss);
panel = new JPanel();
panel.add(new JLabel("服务器"));
tf_host =new JTextField("127.0.0.1", 30);
panel.add(tf_host);
connect =new JButton("连接");
connect.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
client =new Socket(InetAddress.getByName("127.0.0.1"),9999);
} catch (IOException e1) {
ta.append("error\n");
}
}
});
panel.add(connect);
panel.add(new JLabel("端口号"));
tf_port =new JTextField("9999", 30);
panel.add(tf_port);
exit =new JButton("退出");
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
panel.add(exit);
ta = new JTextArea(14, 40);
jScrollPane = new JScrollPane(ta);
panel.add(jScrollPane);
panel.add(new JLabel("消息"));
tf_msg=new JTextField("This is a text.", 30);
panel.add(tf_msg);
send =new JButton("发送");
panel.add(send);
send.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
// client = new Socket(tf_host.getText().trim(), Integer.parseInt(tf_port.getText().trim()));
writer = new PrintWriter(client.getOutputStream());
msg=""+tf_msg.getText().trim()+"\r\n";
writer.write(msg);
writer.flush();
ta.append("client send: "+msg);
} catch (Exception e1) {
ta.append("error\n");
e1.printStackTrace();
}
}
});
//
this.add(panel);
this.setVisible(false);
this.setBounds(local_x, local_y, width, height);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
TCPClient tcpServer= new TCPClient("Chat Room Client");
new Thread(tcpServer).start();
}
@Override
public void run() {
try {
try {
client = new Socket(tf_host.getText().trim(), Integer.parseInt(tf_port.getText().trim()));
} catch (IOException e) {
e.printStackTrace();
}
if (client!= null) {
ta.append(client.getLocalAddress()+":"+client.getLocalPort() +" connected server."+"\n");
}
writer = new PrintWriter(client.getOutputStream());
msg="client send: "+tf_msg.getText().trim()+"\r\n";
writer.write(msg);
writer.flush();
// writer.close();
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
while ((temp = reader.readLine())!=null) {
ta.append("client receive: "+temp+"\n");
// reader.close();
}
} catch (IOException e) {
ta.append("error\n");
}
}
}