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)
java聊天室多线程
群聊
私聊
用户上下线记录并发送
项目结构
服务端
使用linklist添加记录连接的用户,
使用到关键字volatile,常在多线程中用到,它直接将数据保存到主存,每个线程用到它读取都会到主存读取,保障数据一致性,但也降低效率。
线程池管理线程,创建好几个等待连接的线程等待客户端连接,
服务端消息转发
客户端
界面组成
客户端守护线程
当启动客户端,主线程负责监听输入框发送,守护进程监听服务端信息,当界面关闭,守护进程也退出。
项目地址
以上是关于java多线程聊天,两个客户端通过服务端转发消息实现通信,可是为啥信息发不出去,?以下客户端和服务端的主要内容,如果未能解决你的问题,请参考以下文章