java - 多客户端服务器 - Java

标签 java sockets client-server

我准备了一个程序作为客户端,另一个程序作为服务器。

我希望能够向服务器发送消息,然后服务器会将消息转发给也连接到服务器的另一个客户端。

因此服务器应该将消息转发给其他客户端。

我怎样才能做到这一点,我需要阅读哪些内容?

这就是我现在得到的。

服务器.java

package server;

import java.net.*;
import java.io.*;

import javax.swing.*;

public class Server{

public static void run() {
    ServerSocket serverSocket = null;
    Socket socket = null;
    try{
        while(true){
            serverSocket = new ServerSocket(5555);
            socket = serverSocket.accept();
            InputStreamReader streamReader = new InputStreamReader(socket.getInputStream());
            BufferedReader bufferedReader = new BufferedReader(streamReader);
            String message = bufferedReader.readLine();
            System.out.println(message);
            if(message != null){
                PrintStream printStream = new PrintStream(socket.getOutputStream());
                printStream.println("Message receivd!");
            }
            streamReader.close();
            socket.close();
            serverSocket.close();
            bufferedReader.close();
        }
    }catch(Exception e){}
 //     try{
 //         
 //     }catch(Exception e){}
     }
    public static void main(String[]args){
    Server s = new Server();
    s.run();
}

然后我也得到了TCPClient.java

package client;

 import java.net.*;
 import java.io.*;

 public class TCPClient {
private String serverIP = "localhost";
private int serverPort = 1111;
private int count = 0;
private Thread thread;

public TCPClient() {
    this.thread = new Thread(new ConnectAndListenToServer());
  //        thread.start();
}
public void sendMessage(int count){
    this.count = count;
    this.thread = new Thread(new ConnectAndListenToServer());
    thread.start();
}
private class ConnectAndListenToServer implements Runnable {
    Socket socket = null;
    public void run() {
        BufferedReader bufferedReader = null;
        InputStreamReader streamReader = null;
        try {
            socket = new Socket(serverIP,serverPort);
            PrintStream printStream = new PrintStream(socket.getOutputStream());
            printStream.println(count);
            streamReader = new InputStreamReader(socket.getInputStream());
            bufferedReader = new BufferedReader(streamReader);
            String message = bufferedReader.readLine();
            if(message != null){
                System.out.println(message);
            }

        }catch(Exception e){}
        try{
            socket.close();
            bufferedReader.close();
            streamReader.close();
        }catch(Exception ee){}
    }
}

我怎样才能将服务器上已收到的消息转发给另一个客户端?

Example

最佳答案

How would i be able to forward the messeage already received on the server to another client?

我已经在相同的上下文中发布了一些示例。

到目前为止你已经做得很好了,要完成它请看看 Client-Server Communication 。我已经一步一步地描述了它,只需按照线程查找其他示例即可。

如果您还有任何问题,请告诉我!

关于java - 多客户端服务器 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23000708/

相关文章:

java - springboot 返回 responseentity 返回 JSON

Java 8 Completable Future - 并行执行

Python:如何区分套接字错误和超时?

python - Python中是使用http.client还是Socket包?

c++ - 在 Linux 中使用命名管道的简单客户端/服务器程序

java - 如何迭代每个循环以获取重复值

java - 如何在 StringBuilder 中追加星号 * ?

php - 套接字打印问题: PHP/Toshiba B-SA4TM

tomcat - 在客户端连接终止时停止服务器线程

jquery - 构建没有服务器端 Web 技术(如 asp.net、asp.net mvc 等)的 Web 应用程序