77范文网 - 专业文章范例文档资料分享平台

局域网内的多功能聊天室-java

来源:网络收集 时间:2020-09-27 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

局域网内的多功能聊天室源代码:

import java.net.*; import java.util.*; import java.io.*; public class ChatServer

{ static final int DEFAULT_PORT = 6000;

static ServerSocket serverSocket; static Vector connections;// 连接

static Vector clients; //发送信息给所有的人

public static void sendAll(String s)

{if (connections != null) {for (Enumeration e = connections.elements(); // Enumeration过时的接口,// 可以用

e.hasMoreElements();)

{try {PrintWriter pw = new PrintWriter(((Socket) e.nextElement()) .getOutputStream());

pw.println(s); pw.flush();

for each循环

} catch (IOException ex) {ex.printStackTrace(); }}}

System.out.println(s);

}

//发送信息给单独一个人

public static boolean sendOne(String name, String msg) {if (clients != null) {for (Enumeration e = clients.elements(); e.hasMoreElements();)

{ClientProc cp = (ClientProc) e.nextElement(); if ((cp.getName()).equals(name))

{try {PrintWriter pw = new PrintWriter((cp.getSocket())

.getOutputStream()); pw.println(msg);

pw.flush(); return true; // 返回值为真,找到了这个人可以进行聊天 } catch (IOException ioe) {ioe.printStackTrace();

}}}}

return false;// 没有找到这个人,应该是此人已经退出了聊天室

}

public static void addConnection(Socket s, ClientProc cp)

{if (connections == null)

{connections = new Vector();} connections.addElement(s); if (clients == null) {clients = new Vector();}

clients.addElement(cp);}

public static void deleteConnection(Socket s, ClientProc cp)

throws IOException {if (connections != null)

{connections.removeElement(s); s.close();} if (clients != null)

{clients.removeElement(cp);}} public static Vector getClients() {return clients;}

/*服务器端在此启动*/

public static void main(String[] arg) {int port = DEFAULT_PORT; try

{serverSocket = new ServerSocket(port); System.out.println(\服务器已经启动,正在监听...\} catch (IOException e)

{System.out.println(\异常\

System.err.println(e); System.exit(1);}

while (true) { // 死循环

try

{Socket cs = serverSocket.accept(); ClientProc cp = new ClientProc(cs); // 启动一个用户线程

Thread ct = new Thread(cp); //Thread ar = new Thread(ct.)

ct.start(); addConnection(cs, cp);

} catch (IOException e) {System.err.println(e);}}}}

import java.net.*; import java.util.*; import java.io.*;

class ClientProc implements Runnable {/*为某个用户服务的一个用户线程*/

Socket s;

BufferedReader in; PrintWriter out;

private String name = null;

private String sex = null;

public ClientProc(Socket s) throws IOException {this.s = s; in = new BufferedReader(new InputStreamReader(s.getInputStream()));// 得到输入的

端口流 out = new PrintWriter(s.getOutputStream());// 从端口得到一个输出流

this.updateList();} public String getName() {return name;} public String getSex() {return sex;}

public Socket getSocket() {return s;}

private void updateList()

{// 更新用户列表(即发送当前在聊天室的用户到新来的用户列表中)

Vector cs = ChatServer.getClients(); if (cs != null)

{for (Enumeration e = cs.elements(); e.hasMoreElements();)

{ClientProc cp = (ClientProc) e.nextElement();

String exist_name = cp.getName();

String exit_sex = cp.getSex();

System.out.println(\out.println(\out.flush();}}}

public void run()

{while (name == null)

{try {String inmsg; inmsg = in.readLine(); ChatServer.sendAll(\+ inmsg); // 发送信息更新用户列表 new & {try

{String line = in.readLine(); System.out.println(line);// 处理退出事件(读取信息)

if (line.equals(\

// & boy

String[] userInfo;

userInfo = inmsg.split(\name = userInfo[0]; sex = userInfo[1];

zhangsan

} catch (IOException ee) {ee.printStackTrace();}}

while (true)

{ChatServer.sendAll(\【系统消息】 \退出了聊天室\

ChatServer.deleteConnection(s, this); return;// 处理刷新用户列表请求

} else if (line.equals(\ {this.updateList();

// 一般消息,又可以分为几种,对大家说, 与某个人交谈,或者私聊

} else

{String[] inmsg = line.split(\ if (inmsg[0].compareTo(\

{ChatServer.sendOne(inmsg[1], \

+ this.name);

} else if (inmsg[0].compareTo(\发送文件消息 {// String[] sendfile = line.split(\ ChatServer.sendOne(inmsg[1], \

+ this.name + \ + \

} else if (inmsg[0].compareTo(\接收文件消息 {// String[] acceptfile = line.split(\ ChatServer

.sendOne(inmsg[1], inmsg[0] + \

} else if (inmsg[0].compareTo(\拒绝接收文件消息 {// String[] refusefile = line.split(\ ChatServer .sendOne(inmsg[1], inmsg[0] + \} else if (!line.startsWith(\{ // 对所有人说

ChatServer.sendAll(this.name + \

// String[] inmsg = line.split(\ else if (inmsg[1].equals(\ {if (ChatServer.sendOne(inmsg[2], \

+ name + \{ // success

out.println(\ + inmsg[2] + \// 再发给自己一份 out.flush(); // 一定要有

} else

{out.println(inmsg[2] + \已经离开聊天室\ out.flush(); // 一定要记住要}

} else

{ChatServer.sendAll(\ + inmsg[2] + \发给所有的人}

} catch (IOException e)

{System.out.println(e.toString());

try

{s.close();

} catch (IOException e2) {}

return;}}}}

import javax.swing.JFileChooser; import javax.swing.JProgressBar; import java.util.Date; import java.util.Calendar;

import javax.swing.JTextArea; //import RTFReceiveFrame; import java.awt.*; import java.awt.event.*; import javax.swing.*;

import javax.swing.border.Border;

import javax.swing.text.BadLocationException; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import javax.swing.text.StyledDocument;

import java.net.*; import java.io.*;

import java.net.Socket;

public class ChatFrame extends JFrame implements ActionListener, ItemListener, Runnable, KeyListener

{sendfilethread sendthread;// 发送文件线程;

acceptfilethread acceptthread;// 接收文件线程 Socket acceptfilesocket; // 接收文件传输连接 Socket sendfilesocket; // 发送文件传输连接 ServerSocket fileserver; // 传输文件服务器 String filemsg = null; // 保存文件输入流

String sendfilename = null;// 保存欲发送的文件名 String IP;// 保存本机IP= InetAddress.getLocalHost();// Boolean acceptboolean = false; Boolean sendboolean = false;

int port = 6200;

JProgressBar acceptProgressbar;// 接收进度条 JProgressBar sendProgressbar; // 发送进度条 private Box leftbox = null; private Box rightbox = null;

private Box leftrightbox = null; private Box rightleftbox = null;

private JButton sendfile; // 发送文件按钮

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说医药卫生局域网内的多功能聊天室-java在线全文阅读。

局域网内的多功能聊天室-java.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/yiyao/1150525.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: