发表时间:2022-03-26来源:网络
简单的聊天软件
//客户端
packageyjd9;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;import java.io.*;importjava.net.Socket;importjava.util.logging.Level;importjava.util.logging.Logger;import javax.swing.*;public class MyClient extends JFrame implementsActionListener, Runnable {
Socket clientSocket;
JTextArea jTextReceive= newJTextArea();
JTextField jTextSend= newJTextField();
JButton jbc= new JButton("发送");
JScrollPane jsp= newJScrollPane(jTextReceive);boolean flag = true; //标记是否结束
Thread connenThread; //用于向服务器端发送信息
DataInputStream cin1;
DataOutputStream cout;static boolean flagclient = false;public static voidmain(String[] args) {newMyClient().clientStart();
}public synchronized void changeFlag(booleant) {
flagclient=t;
}public voidclientStart() {try { //连接服务器端,这里使用本机
this.setTitle("客户端,端口号:8080");this.setLayout(null);this.setBounds(20, 00, 300, 300);
jsp.setBounds(20, 20, 220, 100);
jTextSend.setBounds(20, 120, 220, 50);
jbc.setBounds(20, 170, 220, 30);this.add(jsp);this.add(jTextSend);this.add(jbc);this.setVisible(true);
jbc.addActionListener(this);
clientSocket= new Socket("localhost", 8080);
jTextReceive.setText("连接已经建立完毕!\n");while(flag) {try (InputStream is =clientSocket.getInputStream()) {
cin1= newDataInputStream(clientSocket.getInputStream());try (OutputStream os =clientSocket.getOutputStream()) {
cout= newDataOutputStream(os);
connenThread= new Thread(this);
connenThread.start();//启动线程,向服务器端发送信息
String aLine;while (true) {
aLine=cin1.readUTF();
jTextReceive.append("服务器发来信息:" + aLine + "\n");if (aLine.equals("bye")) {
flag= false;
connenThread.interrupt();break;
}
}
cout.close();
}
cin1.close();
}
clientSocket.close();//关闭Socket连接
System.exit(0);
}
}catch(Exception e) {
System.out.println(e);
}
}
@Overridepublic voidrun() {while (true) {try{
Thread.sleep(10);
}catch(InterruptedException ex) {
Logger.getLogger(MyClient.class.getName()).log(Level.SEVERE, null, ex);
}try{if (flagclient == true) {
String str=jTextSend.getText().trim();if(str==null||str.length()
System.out.println(e);
}
}
}
@Overridepublic voidactionPerformed(ActionEvent e) {
JButton jbt=(JButton) e.getSource();if (jbt == jbc) //若单击确认对话框中的“发送”按钮
{
changeFlag(true);
}
}
}//服务器端
packageyjd9;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;import java.io.*;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.logging.Level;importjava.util.logging.Logger;import javax.swing.*;public class Myserver extends JFrame implementsActionListener, Runnable {
JTextArea jTextReceive= newJTextArea();
JTextField jTextSend= newJTextField();
JButton jbs= new JButton("发送");
ServerSocket server= null;
JScrollPane jsp= newJScrollPane(jTextReceive);
Socket clientSocket;//负责当前线程中C/S通信中的Socket对象
boolean flag = true; //标记是否结束
Thread connenThread; //向客户端发送信息的线程
BufferedReader sin; //输入流对象
DataInputStream sin1;
DataOutputStream sout;//输出流对象
boolean flags = false;public static voidmain(String[] args) {
Myserver MS= newMyserver();
MS.serverStart();
}public synchronized void changeFlag(booleant){
flags=t;
}public voidserverStart() {try{
server= new ServerSocket(8080); //建立监听服务
this.setTitle("服务器端,端口号:" +server.getLocalPort());this.setLayout(null);this.setBounds(20, 00, 300, 300);
jsp.setBounds(20, 20, 220, 100);
jTextSend.setBounds(20, 120, 220, 50);
jbs.setBounds(20, 170, 220, 30);this.add(jsp);this.add(jTextSend);this.add(jbs);this.setVisible(true);
jbs.addActionListener(this);while(flag) {
clientSocket=server.accept();
jTextReceive.setText("连接已经建立完毕!\n");try (InputStream is =clientSocket.getInputStream()) {
sin= new BufferedReader(newInputStreamReader(is));try (OutputStream os =clientSocket.getOutputStream()) {
sin1= newDataInputStream(clientSocket.getInputStream());
sout= newDataOutputStream(os);
connenThread= new Thread(this);
connenThread.start();//启动线程,向客户端发送信息
String aLine;while(true){
aLine=sin1.readUTF();
jTextReceive.append("客户端发来信息:" +aLine+"\n");if (aLine.equals("bye")) {
flag= false;
connenThread.interrupt();break;
}
}
sout.close();
}
sin.close();
}
clientSocket.close();//关闭Socket连接
System.exit(0); //程序运行结束
}
}catch(Exception e) {
System.out.println(e);
}
}
@Overridepublic voidrun() {while (true) {try{
Thread.sleep(10);
}catch(InterruptedException ex) {
Logger.getLogger(Myserver.class.getName()).log(Level.SEVERE, null, ex);
}try{if (flags == true) {
changeFlag(false);
String str=jTextSend.getText().trim();if(str==null||str.length()
System.out.println(e);
}
}
}
@Overridepublic void finalize() //析构方法
{try{
server.close();
}//停止ServerSocket服务
catch(IOException e) {
System.out.println(e);
}
}
@Overridepublic voidactionPerformed(ActionEvent e) {
JButton jbt=(JButton) e.getSource();if (jbt == jbs) //若单击确认对话框中的“发送”按钮
{
changeFlag(true);
}
}
}

package yjd9;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import java.net.Socket;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.*;
public class MyClient extends JFrame implements ActionListener, Runnable {
Socket clientSocket; JTextArea jTextReceive = new JTextArea(); JTextField jTextSend = new JTextField(); JButton jbc = new JButton("发送"); JScrollPane jsp = new JScrollPane(jTextReceive); boolean flag = true; //标记是否结束 Thread connenThread; //用于向服务器端发送信息 DataInputStream cin1; DataOutputStream cout; static boolean flagclient = false;
public static void main(String[] args) { new MyClient().clientStart(); }
public synchronized void changeFlag(boolean t) { flagclient = t; }
public void clientStart() { try { //连接服务器端,这里使用本机 this.setTitle("客户端,端口号:8080"); this.setLayout(null); this.setBounds(20, 00, 300, 300); jsp.setBounds(20, 20, 220, 100); jTextSend.setBounds(20, 120, 220, 50); jbc.setBounds(20, 170, 220, 30); this.add(jsp); this.add(jTextSend); this.add(jbc); this.setVisible(true); jbc.addActionListener(this); clientSocket = new Socket("localhost", 8080); jTextReceive.setText("连接已经建立完毕!\n"); while (flag) { try (InputStream is = clientSocket.getInputStream()) { cin1 = new DataInputStream(clientSocket.getInputStream()); try (OutputStream os = clientSocket.getOutputStream()) { cout = new DataOutputStream(os); connenThread = new Thread(this); connenThread.start(); //启动线程,向服务器端发送信息 String aLine; while (true) { aLine = cin1.readUTF(); jTextReceive.append("服务器发来信息:" + aLine + "\n"); if (aLine.equals("bye")) { flag = false; connenThread.interrupt(); break; } } cout.close(); } cin1.close(); } clientSocket.close(); //关闭Socket连接 System.exit(0); } } catch (Exception e) { System.out.println(e); } }
@Override public void run() {
while (true) { try { Thread.sleep(10); } catch (InterruptedException ex) { Logger.getLogger(MyClient.class.getName()).log(Level.SEVERE, null, ex); } try { if (flagclient == true) {
String str = jTextSend.getText().trim(); if(str==null||str.length()
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14