Java版仿QQ聊天客户端与服务器端
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package 聊天工具;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.io.PrintWriter;
import .Socket;
import .UnknownHostException;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
//客户端程序
public class MyClient extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JTextArea jta;
JTextField jtf;
JButton jb;
JPanel jp;
Socket socket;
//网络输入流
Scanner sc;
//网络输出流
PrintWriter pw;
public MyClient()
{
jta = new JTextArea();
jtf = new JTextField(15);
jb = new JButton("发送");
jp = new JPanel();
jta.setEditable(false);
jp.add(jtf);
jp.add(jb);
JScrollPane jsp = new JScrollPane(jta);
this.add(jsp,BorderLayout.CENTER);
this.add(jp,BorderLayout.SOUTH);
jb.addActionListener(this);
jtf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==10){
pw.println(jtf.getText());
//向多行文本框输入历史聊天记录信息
jta.append("客户端说:"+jtf.getText()+"\r\n");
//清空单行文本框内容
jtf.setText("");
}
}
});
//展现
this.setTitle("客户端");
this.setSize(300,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);
try {
//建立连接
socket = new Socket("127.0.0.1",1680);
//网络输入流
sc = new Scanner(socket.getInputStream());
//网络输出流
pw = new PrintWriter(socket.getOutputStream(),true);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true)
{
//接受服务器发送数据
String str = sc.nextLine();
//显示在多行文本框
jta.append("服务器说:"+str+"\r\n");
}
}
public static void main(String[] args) {
new MyClient();
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb)
{
//向服务器发送数据
pw.println(jtf.getText());
//显示在多行文本框
jta.append("客户端说:"+jtf.getText()+"\r\n");
//清空单行文本框
jtf.setText("");
}
}
}
package 聊天工具;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.IOException;
import java.io.PrintWriter;
import .ServerSocket;
import .Socket;
import java.util.Scanner;