求一个用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()

}

}

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

首先,学习java GUI编程,学习监听器。建议看马士兵的视频。然后上网上down源代码,分析类,确定类的属性和方法。第一遍,就是跟着源码敲一遍,然后分腊段段看,一段一段的看友局腊懂,再实现。慢慢就会了。很有收获滴!http://download.csdn.net/detail/geniusice18/4919655#comment 这好滑是高仿QQ2012登录界面 源代码

两种解决办法,

第一种使用纯java的梁敏方式,使用组件JTextPane 或者JEditorPane 来显示图片和文字

第二橡银枝种使用JEditorPane,但是里面存放HTML代码. 用HTML来搏猜控制文字和图片的显示


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

原文地址:https://54852.com/yw/12566325.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存