java多线程聊天,两个客户端通过服务端转发消息实现通信,可是为啥信息发不出去,?以下客户端和服务端

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程聊天,两个客户端通过服务端转发消息实现通信,可是为啥信息发不出去,?以下客户端和服务端相关的知识,希望对你有一定的参考价值。

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import javax.swing.*;
public void init()
connectToServer();
jtf.setText("e");
JPanel p=new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("Enter Text"),BorderLayout.WEST);
p.add(jtf,BorderLayout.CENTER);
p.add(send,BorderLayout.EAST);
jtf.setHorizontalAlignment(JTextField.LEFT);
setLayout(new BorderLayout());
add(p,BorderLayout.NORTH);
add(new JScrollPane(jta),BorderLayout.CENTER);
send.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
//String message1=jtf.getText();
if(e.getSource()==send)
try
String message1=null;
message1=jtf.getText().trim();
toServer=new DataOutputStream(socket.getOutputStream());
toServer.writeUTF(message1);
catch(IOException ex) ex.printStackTrace();

);
new Thread(this).start();

public void connectToServer()

try
socket=new Socket("localhost",8000);
socket1=new Socket("localhost",7999);
catch(Exception ex)
System.err.println(ex);

public void run() String str=null;
while(true)
try
fromServer = new DataInputStream(socket1.getInputStream());
str = fromServer.readUTF();
jta.append("Received frome Server is "+str+'\n');
catch(Exception e)

参考技术A 快速的看了一下,请问服务端在哪 参考技术B 链接呢网络没错?

java聊天室多线程

群聊

私聊

用户上下线记录并发送

项目结构

服务端
使用linklist添加记录连接的用户,
使用到关键字volatile,常在多线程中用到,它直接将数据保存到主存,每个线程用到它读取都会到主存读取,保障数据一致性,但也降低效率。

线程池管理线程,创建好几个等待连接的线程等待客户端连接,


服务端消息转发

客户端
界面组成

客户端守护线程
当启动客户端,主线程负责监听输入框发送,守护进程监听服务端信息,当界面关闭,守护进程也退出。

项目地址

以上是关于java多线程聊天,两个客户端通过服务端转发消息实现通信,可是为啥信息发不出去,?以下客户端和服务端的主要内容,如果未能解决你的问题,请参考以下文章

java聊天室多线程

java聊天室多线程

多线程+socket实现多人聊天室

java Socket实现简单在线聊天

java Socket实现简单在线聊天

java实现多客户聊天功能