클라이언트가 둘 이상의 서버에 연결되기를 원합니다. 즉, 고객이 숫자를 으로 전송하여 번호를 제곱하고 클라이언트에 다시 표시되도록합니다. 그러나 클라이언트가이 제곱 된 번호를 다른 포트에서 수신하는 두 번째 서버로 보내길 원합니다.클라이언트를 Java의 여러 서버에 연결
이 기능을 구현하는 방법을 모르겠다. 스레드를 통해이 작업을 수행 할 수 있습니까? 또는 server2
에 두 번째 소켓을 열면됩니까?
다음은 내 고객을위한 코드입니다. 당신은 단지 당신이받을 때 두 번째 서버에 데이터를 (즉, 수신하지 않음) 보내는 당신이 제공 한 정보를 바탕으로
import java.io.*;
import java.net.*;
public class ClientA {
public static void main(String[] args) {
String serverhost = "localhost";
int serverport = 6789;
Socket clientSocket = null;
DataOutputStream os = null;
BufferedReader is = null;
try {
clientSocket = new Socket(serverhost, serverport);
os = new DataOutputStream(clientSocket.getOutputStream());
is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: " + serverhost);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: " + serverhost);
} //end try
if (clientSocket == null || os == null || is == null) {
System.err.println("An error has occured, please restart.");
return;
} //end if
try {
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String keyboardInput = br.readLine();
os.writeBytes(keyboardInput + "\n");
int n = Integer.parseInt(keyboardInput);
if (n == 0) {
break;
}
String responseLine = is.readLine();
System.out.println("Server returns its square as: " + responseLine);
}
os.close();
is.close();
clientSocket.close();
} catch (UnknownHostException e) {
System.err.println("Trying to connect to unknown host: " + e);
} catch (IOException e) {
System.err.println("IOException: " + e);
} //end try
} //end main
} //end class
응답을받은 후 첫 번째 서버에 대한 연결을 유지해야합니까? – ddmps
@Pescis 아니요. – user1896168