簡體   English   中英

無法在JAVA中使用TCP啟用雙工模式通信

[英]Unable to enable Duplex mode communication using TCP in JAVA

我對JAVA和套接字編程都不熟悉,我想進行雙工模式傳輸,但是我無法將用戶輸入的消息從服務器發送到客戶端,而從客戶端到服務器的消息可以。 以下是我分別針對服務器端和客戶端的代碼。

public class connectionServer {

對於服務器:

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

public static void main(String[] args) {
    // TODO code application logic here
    String clientSentence;
    String capitalizedSentence;
    BufferedReader inFromClient;
    DataOutputStream outToClient;
    BufferedReader inFromUser;

    try
    {
        ServerSocket welcomeSocket = new ServerSocket(6789);
        while(true)
        {
            Socket connectionSocket = welcomeSocket.accept();
            inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
            outToClient = new DataOutputStream(connectionSocket.getOutputStream());                
            clientSentence = inFromClient.readLine();
            System.out.println(clientSentence);
            inFromUser = new BufferedReader(new InputStreamReader(System.in));
            capitalizedSentence = clientSentence.toUpperCase() + '\n';
            String tempString = inFromUser.readLine();
            outToClient.writeBytes(tempString);
        }
    }
    catch(IOException e)
    {
        System.out.println(e);
    }
}
}

對於客戶:

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

public class connectionClient {

    public static void main(String[] args) {
    // TODO code application logic here
        String sentence;
        String modifiedSentence;
        try
        {
            while(true)
            {
                 BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
                 Socket clientSocket = new Socket("localhost", 6789);
                 DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
                 BufferedReader inFromServer = new BufferedReader(new
                 InputStreamReader(clientSocket.getInputStream()));
                 sentence = inFromUser.readLine();
                 outToServer.writeBytes(sentence + '\n');
                 modifiedSentence = inFromServer.readLine();
                 System.out.println("FROM SERVER: " + modifiedSentence);
            }
//        clientSocket.close();
            }
            catch(IOException e)
            {
                System.out.println(e);
            }
        }    
    }

在這方面的任何幫助

在您的代碼中,客戶端和服務器都在inputstream.readLine ();上阻塞了inputstream.readLine ();

Client: You say something
Server: No you say something

暫無
暫無

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

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