簡體   English   中英

Java程序之間的通訊

[英]Communication between Java programs

我正在嘗試學習如何處理Java 8中的網絡,並且正在嘗試使客戶端程序與服務器進行通信。 向客戶端詢問一個字符串,該字符串將發送到服務器,然后服務器將它以高位字符發送回去。

我無法使服務器部分正常工作,除了建立連接這一事實外,它根本不會寫任何東西。 有人可以解釋我的代碼有什么問題嗎?

服務器:

public static void main(String[] args) throws IOException {
    int listenPort = 9000;
    ServerSocket listenSocket = new ServerSocket(listenPort);
    Socket socket = listenSocket.accept();

    System.out.println("Connexion réussie !");

    InputStream inputStream = socket.getInputStream();
    OutputStream outputStream = socket.getOutputStream();

    BufferedReader buffer = new BufferedReader(new InputStreamReader(inputStream));
    DataOutputStream output = new DataOutputStream(outputStream);

    String line = null;

    System.out.println("test : " + buffer.readLine());

    while((line = buffer.readLine()) != null) {
        System.out.println("Message reçu : " + line);
        System.out.println("Message envoyé : " + line.toUpperCase());
        output.writeUTF(line.toUpperCase());

        if(line.equals("stop")) {
            socket.close();
            listenSocket.close();
        }
    }
}

客戶端 :

public static void main(String[] args) throws IOException, UnknownHostException {
    Socket socket = new Socket("127.0.0.1", 9000);

    InputStream inputStream = socket.getInputStream();
    OutputStream outputStream = socket.getOutputStream();
    DataInputStream input = new DataInputStream(inputStream);
    DataOutputStream output = new DataOutputStream(outputStream);

    BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));

    String line = null;

    while((line = buffer.readLine()) != null) {
        System.out.println("Message envoyé : " + line);
        output.writeChars(line);
        System.out.println("Message reçu : " + input.readUTF());

        if(line.equals("stop")) {
            break;
        }
    }

    socket.close();

}

在客戶端方法內部,您可以在while循環內調用output.writeChars(line) ,這意味着在服務器向您發送內容之后 ,您需要向服務器發送內容。

更改您的客戶端代碼,如下所示:

String line = "What a wonderful line";
System.out.println("Message envoyé : " + line);
output.writeChars(line);

while((line = buffer.readLine()) != null) {
    System.out.println("Message reçu : " + input.readUTF());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM