1

我希望客户端连接到多个服务器。即我希望我的客户发送一个数字,该数字将server1其平方并将其回显给客户端。但是,我希望客户端将这个平方数发送到在不同端口上侦听的第二台服务器。

我不确定如何实现这个功能,我可以通过线程来做到这一点,还是只打开第二个套接字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
4

1 回答 1

0

Based on the info you've given, I don't see the need to make it a multi-threaded application as you're only sending (i.e. not receiving) data to the second server when you receive a reply from the first server. Just set up a second socket to the other address and send the data when you get it from the first server.

于 2013-03-30T18:36:49.383 回答