socket 收发聊天内容
package aaa;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
//客户端的类
public class ChatClientFrame extends JFrame {
private JTextField txtSend=new JTextField();
private JTextArea txtMsg=new JTextArea();
private JButton btn=new JButton("send");
private BufferedReader br;
private BufferedWriter bw;
public ChatClientFrame() {
this.setBounds(550,50,520,540);
this.setTitle("client");
Container c=this.getContentPane();
c.setLayout(null);
txtMsg.setBounds(20,20,460,400);
txtMsg.setBackground(Color.YELLOW);
txtMsg.setEditable(false);
txtSend.setBounds(20, 440, 320, 40);
btn.setBounds(380,440,100,40);
c.add(txtMsg);
c.add(txtSend);
c.add(btn);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = txtSend.getText();
try {
bw.write(text+'\n');
bw.flush();
String text2 = txtMsg.getText();
if(text2.equals("")){
txtMsg.setText(txtMsg.getText()+"发送: "+text+"");
}else{
txtMsg.setText(txtMsg.getText()+"\n发送: "+text+"");
}
txtSend.setText("");
txtSend.requestFocus();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// TODO Auto-generated method stub
}
});
try {
btn.setEnabled(false);
Socket socket=new Socket("localhost", 9000);
btn.setEnabled(true);
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
new Thread(){
public void run() {
while(true){
try {
String s=br.readLine();
String s1=txtMsg.getText();
if(s1.equals("")){
txtMsg.setText(txtMsg.getText()+"接受: "+s);
}else{
txtMsg.setText(txtMsg.getText()+"\n接受: "+s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
new ChatClientFrame();
}
}
package aaa;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
//服务端的类
public class ChatServerFrame extends JFrame {
private JTextField txtSend=new JTextField();
private JTextArea txtMsg=new JTextArea();
private JButton btn=new JButton("send");
private BufferedReader br;
private BufferedWriter bw;
public ChatServerFrame() {
this.setBounds(50,50,520,540);
this.setTitle("server");
Container c=this.getContentPane();
c.setLayout(null);
txtMsg.setBounds(20,20,460,400);
txtMsg.setBackground(Color.YELLOW);
txtMsg.setEditable(false);
txtSend.setBounds(20, 440, 320, 40);
btn.setBounds(380,440,100,40);
c.add(txtMsg);
c.add(txtSend);
c.add(btn);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = txtSend.getText();
try {
bw.write(text+'\n');
bw.flush();
String text2 = txtMsg.getText();
if(text2.equals("")){
txtMsg.setText(txtMsg.getText()+"发送: "+text+"");
}else{
txtMsg.setText(txtMsg.getText()+"\n发送: "+text+"");
}
txtSend.setText("");
txtSend.requestFocus();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// TODO Auto-generated method stub
}
});
try {
ServerSocket serverSocket=new ServerSocket(9000);
btn.setEnabled(false);
Socket socket=serverSocket.accept();
btn.setEnabled(true);
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
new Thread(){
public void run() {
while(true){
try {
String s=br.readLine();
String s1=txtMsg.getText();
if(s1.equals("")){
txtMsg.setText(txtMsg.getText()+"接受: "+s);
}else{
txtMsg.setText(txtMsg.getText()+"\n接受: "+s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
new ChatServerFrame();
}
}
浙公网安备 33010602011771号