网络编程
用Tcp实现多人聊天窗口
实现思路
具体思路:
1、写一个server服务器,用于监听10001端口,以及处理接收和向客户端发出数据。
2、客户端寻找服务器的ip地址与服务器端口。建立连接。
3、每个客户端与服务器建立连接后,创建一个InputStream流和一个OutputStream流用于传输数据。
同时客户端将自己的用户信息对象通过ObejcetOutputStream流传输过来。
4、服务器同时为客户端开启一个线程,用于while(true)死循环接收所发来的信息。
5、服务器根据用户信息的不同权限,处理信息,并将消息发送给每个客户端,使每个客户端可见。
补充内容:
1、编写一个登陆界面,用于输入你的用户名。(已实现)
2、编写一个聊天窗口,用于收发数据。(已实现)
3、用户分为两种不同的权限,普通用户与管理员。(已实现)
4、管理员拥有踢人、禁言功能,普通用户拥有私聊功能(待实现)。
运行界面
具体代码
写的乱七八糟- -!,看看就好
服务器
package chat;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class Login extends Thread{
static JTextArea user,psd;
static JButton jbLogin, jbExit;
static String usname="";
static ObjectOutputStream os;
static DataInputStream dis;
static DataOutputStream dos;
static String ReadIn=" ";
static Login thread;
static User u1;
public void show() {
JFrame Loginmenu=new JFrame();
Loginmenu.setLayout(null);
user=new JTextArea();//新建一个文本框
user.setBorder(BorderFactory.createTitledBorder("你的名字"));//给这个文本框添加标题
Loginmenu.add(user);//将一个文本框加入面板之中
user.setBounds(120, 75, 260, 50);//设置这个文本框的(x轴,y轴,长,宽)
psd=new JTextArea();//新建一个文本框
psd.setBorder(BorderFactory.createTitledBorder("待定"));//给这个文本框添加标题
Loginmenu.add(psd);//将一个文本框加入面板之中
psd.setBounds(15, 380, 660, 200);//设置这个文本框的(x轴,y轴,长,宽)
jbLogin=new JButton("登录");//新建一个按钮
jbLogin.setBounds(280, 250, 100, 50);//设置这个按钮的位置大小
Loginmenu.add(jbLogin);//将一个组件加入面板之中
jbExit=new JButton("退出");//新建一个按钮
jbExit.setBounds(120, 250, 100, 50);//设置这个按钮的位置大小
Loginmenu.add(jbExit);//将一个组件加入面板之中
//下面是按钮监听器
jbLogin.addActionListener(new ActionListener<