我有一个准备好的程序充当客户端,另一个充当服务器。
我希望能够向服务器发送消息,然后服务器将消息转发给另一个也连接到服务器的客户端。
因此服务器应该将消息转发给其他客户端。
我怎么能够做到这一点,我需要阅读什么?
这就是我现在所拥有的。
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){}
}
}
}
我如何能够将服务器上已经收到的消息转发给另一个客户端?
答案 0 :(得分:4)
我如何能够将服务器上已经收到的消息转发给另一个客户端?
我已经在相同的背景中发布了一些示例。
直到现在你做得很好,要完成它,请看看 Client-Server Communication 。我已经逐步描述了它,只需按照线程查找其他样本。
如果您有任何问题,请告诉我!
答案 1 :(得分:0)
只有在Client 2
连接时才Client 1
连接,这才有效。
如果您编写多线程应用程序或使用Selector,则可以这样做。