• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: 多客户端  

资源简介

简单多客户端聊天GUI界面,服务器转发消息,适用于课程作业

资源截图

代码片段和文件信息

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import javax.swing.Jframe;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Client {

public static int i=0;//想聊天的线程号

public static void main(String[] args) throws ClassNotFoundException {
try {

Socket client=new Socket(“localhost“8888);//本地ip创建socket

BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));//缓冲输入流读取当前的线程号
  int n=Integer.parseInt(br.readLine());
  SwingTest swingtest=new SwingTest();//实例化一个面板对象
 
 
  swingtest.jt2.setText(“当前线程号为“+n+“   请先在上方输入你想聊天的线程号?\n“);//把这条消息送到当前文本版框中
  System.out.println(“当前线程号为“+n+“   请先在上方输入你想聊天的线程号?\n“);
 
 
   receiveMessage re=new receiveMessage(clientswingtest); //这个线程用来一直从服务器接收消息
   re.start(); //因为存在一个while的读写操作,所以必须开启线程操作

 
 PrintWriter pr=new PrintWriter(client.getOutputStream());//输出流

 System.out.println(“再在下方输入聊天内容,exit结束“);
//输出流,发消息给服务器中转
 

 swingtest.jt2.append(“再在下方输入聊天内容,exit结束\n\n“);//文本2中,追加提示
 

 
 swingtest.b1.addActionListener(new ActionListener() { //问题
public void actionPerformed(ActionEvent e) {
try {

String str1=swingtest.jt1.getText().toString();
 pr.println(str1);
pr.flush();
swingtest.jt2.append(“你想要与 “+str1+“号客户端交流\n“);
}catch (Exception e1) {
// TODO: handle exception
}

}
});
 
 swingtest.b3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e2) {
 try {
String str3=swingtest.jt3.getText().toString();
pr.println(“线程“+n+“:“+str3);
pr.flush();
swingtest.jt2.append(“线程“+n+“:  “+str3+“\n“);
swingtest.jt3.setText(““);
 }catch (Exception e3) {
// TODO: handle exception
}
}
});

} catch (IOException e) {}
}

}
class SwingTest extends Jframe {
Jframe jf=null;
Container container=null;
JPanel jp1jp2jp3;
JTextField jt1jt3;
JTextArea jt2;
Button b1b3;
public SwingTest()
{
jf=new Jframe(“即时通信“);
container=jf.getContentPane();

container.setLayout(new BorderLayout());//设置为边界布局管理器

 jp1=new JPanel(new FlowLayout(155));//居中对齐,组件间间隔5
 jp2=new JPanel(new FlowLayout(155));//居中对齐,组件间间隔5
jp3=new JPanel(new FlowLayout(155));//居中对齐,组件间间隔5

 jt1=new JTextField(22);//输入连接线程号的文本,放在上边,这里的参数表示这个输入框的长度为10列。

 jt2=new JTextArea(2227);//展示来往消息的文

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1006  2018-05-06 11:41  ClientThread.java
     文件        1289  2018-05-04 18:50  Server.java
     文件         761  2018-05-04 18:50  receiveMessage.java
     文件        1081  2018-05-04 16:44  user.java
     文件        3756  2018-05-06 11:46  Client.java

评论

共有 条评论