关于用java多线程做的一个多人聊天小程序的一个问题——如何实现进程间的通信? 100

现在已经可以实现单用户与服务器的对话,为了多用户可以连接,在服务器端改用多线程:try{//建立连接serverSocket=newServerSocket(port);... 现在已经可以实现单用户与服务器的对话,为了多用户可以连接,在服务器端改用多线程:
try {
// 建立连接
serverSocket = new ServerSocket(port);

socket = serverSocket.accept();
System.out.println("新用户连接");
new LogicThread(socket);

} catch (Exception e) {
e.printStackTrace();
}
------------------------------------------------------------------------
//以下为LogicThread类中关键内容
is = socket.getInputStream();
os = socket.getOutputStream();

GUI.qd.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("ok");
String s = GUI.inp.getText();
try {
System.out.println(s);
GUI.output += "你:" + s + '\n';
GUI.out.setText(GUI.output);
os.write(s.getBytes());

} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
while (true) {
byte[] b = new byte[1024];

// 接收客户端发送内容

int n = is.read(b);
String s = new String(b, 0, n);
// 输出
System.out.println("客户端发送内容为:" + new String(b, 0, n));
GUI.output += "对方:" + s + '\n';
GUI.out.setText(GUI.output);
// is = socket.getInputStream();

}
请问在此基础上如何修改,可以实现多人聊天?(即类似于群的功能)
展开
 我来答
元小翠044
推荐于2018-04-07 · TA获得超过8.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:89%
帮助的人:3134万
展开全部
传统的进程间通信的方式有大致如下几种:

(1) 管道(PIPE)
(2) 命名管道(FIFO)
(3) 信号量(Semphore)
(4) 消息队列(MessageQueue)
(5) 共享内存(SharedMemory)
(6) Socket

Java如何支持进程间通信。我们把Java进程理解为JVM进程。很明显,传统的这些大部分技术是无法被我们的应用程序利用了(这些进程间通信都是靠系统调用来实现的)。但是Java也有很多方法可以进行进程间通信的。
除了上面提到的Socket之外,当然首选的IPC可以使用Rmi,或者Corba也可以。另外Java nio的MappedByteBuffer也可以通过内存映射文件来实现进程间通信(共享内存)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式