java 简单聊天室程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单聊天室程序

先运行Server,然后运行test。有简单的界面登录成功后实现群聊,-to name something 实现单独聊天

package chatroom;

import java.io.IOException;

import .DatagramPacket;

import .DatagramSocket;

import .InetAddress;

import .SocketAddress;

import .SocketException;

import .UnknownHostException;

import java.util.Enumeration;

import java.util.Hashtable;

import java.util.Scanner;

public class Server implements Runnable{

private DatagramSocket server = null;

private DatagramPacket getDatas = null;

private InetAddress serverAddress = null;

private int port = 0;

//开始运行监听的变量

private boolean beStart = false;

//用来测试服务器的变量

private boolean test = true;

//信息存储器

private Hashtable infoMemory = new Hashtable();

/**

* 测试服务器连接

* @param ip

* @param port

* @return

*/

public boolean testServer(String ip,int port) {

this.initServer(ip, port);

return test;

}

/**

* 服务器初始化

* @param ip

* @param port

*/

public void initServer(String ip,int port) {

//确定IP与port输入正确

this.fixServerLink(ip,port);

try {

server = new DatagramSocket(this.port,serverAddress);

System.out.println("!-The Server Initialization Success!");

//可以开始运行变量

beStart = true;

} catch (SocketException s) {

//如果出现异常,则服务器测试不通过

test = false;

errorTip("!-The Server Initialization Fail!");

}

}

/**

* 确定服务器IP和端口信息

* @param ip

* @param port

*/

private void fixServerLink(String ip,int port) {

//判断连接服务器的端口号

//如果输入命令为0,则为默认端口号9999

//否则端口号为新端口号

if(port == 0)

this.port = 9999;

else

this.port = port;

//判断连接服务器的IP地址

//如果输入命令为0,则为默认的本地IP地址

//否则为输入的IP地址

try {

if(ip.equalsIgnoreCase("0"))

this.serverAddress = InetAddress.getLocalHost();

else

this.serverAddress = InetAddress.getByName(ip);

} catch (UnknownHostException u) {

errorTip("!-Sorry, IP address you put is not currect!");

}

}

* 监听信息

*

*/

public void listenLink() {

byte[] buf = new byte[1024];

String mes = null;

try {

getDatas = new DatagramPacket(buf,buf.length);

System.out.println("!-The Server starts listenning to message.");

while(beStart) {

server.receive(getDatas);

mes = new String(buf,0,getDatas.getLength());

//将获取的数据传递至数据分析器

this.analyseMes(mes);

}

} catch (IOException e) {

errorTip("!-The Server Can not receive message");

}

}

/**

* 数据分析器,给予相应处理

* @param mes

*/

private void analyseMes(String mes) {

//获取当前客户端的地址:

SocketAddress adr = getDatas.getSocketAddress();

//-test:进行服务器与客户端的连接测试

//若成功,则将该客户端发送成功消息

if(mes.trim().equalsIgnoreCase("-test")) {

transforMesSingle(adr,"-test: !-From Server:Succeed in Testing.");

}

//-quit:接受客户端退出信息

//将该用户的退出信息转发至所有在线成员

else if(mes.trim().equalsIgnoreCase("-quit")) {

String name = this.getConsumerName(adr);

System.out.println(name+"//"+adr+" quit! ");

transforMes("* "+name+"退出聊天室");

infoMemory.remove(name);

}

相关文档
最新文档