站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题如何用java做类似QQ的局域网即时通讯工具?给点提示。

如何用java做类似QQ的局域网即时通讯工具?给点提示。

摘要: 如何用java做类似QQ的局域网即时通讯工具?给点提示。


用JAVA完成一个局域网内的即时通讯工具,这个工具的功能包括:是一个对等的应用,既是服务器又是客户端;你可用它自动发现网上的伙伴(提示:使用组波);你可用它邀请伙伴聊天,也可接收伙伴的聊天请求(要求使用TCP);你可同时与多个伙伴聊天,也可同时接收多个伙伴的信息;良好的用户界面

看起来分成好几块了,希望高手给点提示,该看什么书,用什么类,方法等等。学习java半年了,还是好多类不懂,欢迎提意见


//文件名:ChatClient.java
import java.net.*;
import java.io.*;
/**
*

Title: 网络聊天吧


*

Description: 这是一个使用数据报通讯方式的聊天程序的客户端


*

Copyright: Copyright (c) 2003


*

Filename: ChatClient.java


* @version 1.0
*/
public class ChatClient{
private DatagramSocket s;
private InetAddress hostAddress;
private byte[] buf = new byte[1000];
private DatagramPacket dp = new DatagramPacket(buf,buf.length);

/**
*
方法说明:构造器,这里实现接收用户输入和与服务器通讯
*
输入参数:
*
返回类型:
*/
public ChatClient(){
try{
//使用构造器,创建使用本机任何可用端口的数据包Socket
s = new DatagramSocket();
//获取本地IP
hostAddress = InetAddress.getByName("localhost");
System.out.println("Client start............");
while(true){
String outMessage ="";
//读取输入
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
try{
outMessage = stdin.readLine();
}catch(IOException ie){
System.err.println("IO error!");
}
//如果输入“bye”则表示退出程序
if(outMessage.equals("bye")) break;
String outString = "Client say: "+ outMessage;
byte[] buf = outString.getBytes();
//打包数据,发送数据
DatagramPacket out = new DatagramPacket(buf,buf.length,hostAddress,ChatServer.PORT);
s.send(out);
//等待服务器返回
s.receive(dp);
String rcvd = "rcvd from "+ dp.getAddress() + ", " + dp.getPort() +
": "+ new String(dp.getData(),0,dp.getLength());
System.out.println(rcvd);

}
}catch(UnknownHostException e){
System.out.println("Can;t open socket");
System.exit(1);
}catch(SocketException e){
System.out.println("Can;t open socket");
e.printStackTrace();
System.exit(1);
}catch(IOException e){
System.err.println("Communication error");
e.printStackTrace();
System.exit(1);
}catch(Exception e){
System.err.println("Communication error");
e.printStackTrace();
System.exit(1);
}
System.out.println("ChatClient over");
}
/**
*
方法说明:主方法
*
输入参数:
*
返回类型:
*/
public static void main(String[] args){
new ChatClient();
}
}





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

Title: 网络聊天吧


*

Description: 使用数据报创建的聊天服务器


*

Copyright: Copyright (c) 2003


*

Filename: ChatServer.java


* @version 1.0
*/
public class ChatServer{
static final int PORT = 4000;//设置服务端口
private byte[] buf = new byte[1000];
private DatagramPacket dgp =new DatagramPacket(buf,buf.length);
private DatagramSocket sk;
/**
*
方法说明:服务端构造器,实现读取用户输入和通讯
*
输入参数:
*
返回类型:
*/
public ChatServer(){
try{
//实例化数据报
sk = new DatagramSocket(PORT);
System.out.println("Server start.................");
while(true){
//等待接收
sk.receive(dgp);
//获取接收信息
String rcvd = new String(dgp.getData(),0,dgp.getLength())+
", from address: "+ dgp.getAddress()+
", port: "+ dgp.getPort();
System.out.println(rcvd);
String outMessage ="";
//读取输入
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
try{
outMessage = stdin.readLine();
}catch(IOException ie){
System.err.println("IO error!");
}
String outString = "Server say: "+ outMessage;
//拷贝字符到缓存
byte[] buf = outString.getBytes();
//打包数据,发送回信息。
DatagramPacket out = new DatagramPacket(buf,buf.length,dgp.getAddress(),dgp.getPort());
sk.send(out);
}
}catch(SocketException e){
System.err.println("Can't open socket");
System.exit(1);
}catch(IOException e){
System.err.println("Communication error");
e.printStackTrace();
System.exit(1);
}
}
public static void main(String[] args){
new ChatServer();
}
}


这是我以前做的一个,你可以 参考以下
注释写的很明白


http://6cncn.cn/blog/user1/xblue/index.html
我有代码!不过不怎么样!呵呵


LumaQQ就是用java编的,而且是开源的,lz可以去看看。


mark!


以前跟别人一起写了个,用Socket,难点多线程。


up


我也写过一个类似的程序,是用WINSOCKET来完成的,不过没有楼上的复杂


MARK~~


zh029t(蓝色海岸)

单独编译你的文件,好象服务器端 Can't open socket
客户端怎么来聊天呢?




恩,清华搞得LumaQQ不错,值得一看


可以的呀!


最近我也有想作im的念头,可就是java没怎么学,对网络也学的不怎么样


LumaQQ 的源代码,,我怎么找不到呢


关注


MARK


java的话,可以看看wildfire(服务端)和spark(客户端)的代码!都是用java写的协议是用xmpp,非常优秀的设计!可惜我没有时间继续研究了!


LumaQQ??
没听说过?关注中......

我现在仍然理不出头绪来,请各位大虾指点指点,该看哪方面的书籍或资料?


MARK


lumaqq是清华的人事的,你可以下载他的代码做的,并且界面也很漂亮,
网址:http://lumaqq.linuxsir.org/main/?q=node/18
你可以去看看jabberd,可以给你很多路子。

前一段时间买了一台笔记本,现因为又要搬家,想把家里那台台式机出售(出售整机).
配置如下:
显示器: PHILIPS 15 纯平
CPU: 赛扬2.4GHz
内存: 768M DDR
硬盘: 160G
光驱: CD-ROM
价格2500元,保修半年,如有硬件故障本人保证跟踪维修(另送两块20G的硬盘)。

联系人:冷先生
电 话:13661621160
QQ:120436763
MSN:lengweipingsw@hotmail.com


配置如下:
显示器: PHILIPS 15 纯平
CPU: 赛扬2.4GHz
内存: 768M DDR
硬盘: 160G
光驱: CD-ROM
低音炮: 纳伟士(价格185元,前一段时间买的)
价格2300元,保修半年,如有硬件故障本人保证跟踪维修(另送两块20G的硬盘)。

联系人:冷先生
电 话:13661621160
QQ:120436763
MSN:lengweipingsw@hotmail.com


加低音炮,再少200元啊。


如何既作服务器又作客户端?
如何上线后能自动通知其它客户端呢?
上面好像都没有解答.

其实关键点是广播技术,马上得坐车,明天再说


还有lumaqq这个东西呢,回去下下来看


以前好像下过lumaqq,或者类似一个,但它的源码和开发文档提供的方式很不友好,不能直接下载.于是也就没看.软件方面也从没看到清华出点"实符其名"的东西,想想也不一定值得看.

昨天说到广播,但没人注意,好像都去看这个软件了.如果它的源码现在以压缩包方式提供下载的话,告诉我一声.


lengweipingsw() 你的消息挺诱惑,可惜不知你和我在不在一个城市,邮寄可不方便.


to theforever(碧海情天)

地址:上海市浦东新区羽山路100号(浦东体育中心对面).


配置如下:
显示器: PHILIPS 15 纯平
CPU: 赛扬P4,2.4GHz
内存: 768M DDR
硬盘: 160G
光驱: CD-ROM
低音炮: 纳伟仕(价格185元,前一段时间买的)
价格2300元,保修半年,如有硬件故障本人保证跟踪维修(另送两块20G的硬盘)。

联系人:冷先生
电 话:13661621160
QQ:120436763
MSN:lengweipingsw@hotmail.com
地址:上海市浦东新区羽山路100号(浦东体育中心对面).

如需要硬盘出售20G的
一块20G 80元
二块20G 120元.


做即时通信,可以去看看jabberd,,用上jabberd就可以跟MSN等一系列的聊天工具相互聊了.
而且不用我们去代码,服务器端都已经实现了.只要我们配置就够了.


jabberd 是什么东东?
还有 lumaqq ?
怎么下载?
在百渡里面搜索么


jabberd 是种协议,lumaqq你去找一下就知道了


看来没有高人指点了,明天结帖!!


↑返回目录
前一篇: 前辈请指点一下
后一篇: 小弟初学JAVA问两个简单问题!~~~~~~~~~~~~~~~各位不要见