求一个用java编写的套接字实现类似于QQ对话的程序,急用

求一个用java编写的套接字实现类似于QQ对话的程序,急用,第1张

有两个类,服务器客户端

服务器类代码:

package chat

import java.io.*

import java.net.*

import java.util.*

/*服务器类*/

public class Server {

public List<Socket>socketList = new ArrayList<Socket>()//存放所有连接的客户端的集合

public ServerSocket server//服务器

public int portNum//端口号

public Server(int portNum){

this.portNum = portNum

}

public void innit(){

try {

server = new ServerSocket(portNum)

System.out.println("服务器开启成功!")

int socketNum = 0

while(true){

Socket socket = server.accept()/伍薯/被动等待客户端的连接

socketNum++

System.out.println("第"+socketNum+"个客户端连接成功!!")

socketList.add(socket)//连接的客户端存放到集腔差者合里面

new RWThread(socket).start()

}

} catch (IOException e) {

e.printStackTrace()

}

}

class RWThread extends Thread{//庆旅接收和发送消息的线程

public Socket socket

public RWThread(Socket socket){

this.socket = socket

}

public void run() {

super.run()

try {

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()))

while(true){

String message = br.readLine()

System.out.println(message)//接收客户端发来的消息

for(int i=0i<socketList.size()i++){//发送给所有连接的客户端

PrintWriter pw = new PrintWriter(new OutputStreamWriter(socketList.get(i).getOutputStream()))

pw.println(message)

pw.flush()

}

}

} catch (IOException e) {

e.printStackTrace()

}

}

}

public static void main(String[] args) {

int portNum = 8888//创建服务器的端口号

Server server = new Server(portNum)

server.innit()

}

}

客户端类:

package chat

import java.io.*

import java.net.*

import java.util.*

/*客户端类*/

public class Client {

public Socket socket

public Client(){

Scanner sca = new Scanner(System.in)

try {

socket = new Socket("127.0.0.1",8888)//创建客户端

new ReadThread(socket).start()//开启读取从服务器端发来的信息

while(true){

PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()))

String message = sca.nextLine()

pw.println(message)//向服务器发送信息

pw.flush()

}

} catch (UnknownHostException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

System.out.println("错误:服务器未开启!!!")

}

}

class ReadThread extends Thread{//读取服务器发来信息的线程

public Socket socket

public ReadThread(Socket socket){

this.socket = socket

}

public void run() {

super.run()

try {

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()))

while(true){

String message = br.readLine()

System.out.println(message)//输出信息

}

} catch (IOException e) {

e.printStackTrace()

}

}

}

public static void main(String[] args) {

Client client = new Client()

}

}

现打开服务器类,然后可以打开多个客户端进行聊天

声明:本软件采用部分第三方控件,如果你因为使用第三方控件所引起的

理论上或实际的损失与作乱乱者无关.

请安下列步骤使用此源代码:

1.本系统采用Delphi 6.0+ Microsoft Access 2000 开发而成.

2.先正确安装Delphi 6.0,Microsoft Access 2000

作哗亏档者强烈推荐Delphi 运行于 Windows 20000 Professional+Sp3

2.正确安装本光盘附带的 ABC控件包,ICS控件包,RX Library控件

包,Appbar控件,Tcaptionform控件,TinyDB控件,Dximagelist控件

,Acm_Component控件,DevExpress控件,AMHK控件等.(提供的控件全部

安装即可)。

3.客户端源程序:client/hyicq.dpr 工程文件(为系统的客户

端软件).说明:client/icqmend 工程文件为修正客户端数据文件用空祥

的,在每次正常退出客户端软件时运行.

4.服务器源程序:server/hyicqsado.dpr.

5.服务器补丁3源程序:server/hyicqsp3.dpr.

6.聊天室服务器源程序:server/chatserver.dpr.

7.数据模版文件可以用/tinydb/tools/TinyDB Desktop/dbd.exe打开.

密码为:705926.该文件主要用于客户端的聊天记录及用户资料.

说明:

1.本软件最佳运行环境,win9x/nt/2000,WINDOWS XP运行不稳定.

2.你可以对此源码做任何修改但不得散发此软件源码.

3.ABC控件组及TINYDB控件的安装可以打用delphi6.0 执行菜单 component>>

install pageages... ADD添加bpl文件.

4.你必须指定控件的路径,delphi6.0菜单中的.tools>>environment options...

选择library 添加library path.

类似QQ的聊天工具?有一种叫luma的QQ程序,是用java编写的,而且代码开放,适用于各种安装了java平台的计算机.

不过好像已经不陵埋跟新了,可惜了.

腾讯官尺缓蚂方现在也提供了java版本的哪拦qq现在


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12448034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存