簡體   English   中英

簡單的套接字級程序 - 客戶端/服務器

[英]Simple socket-level program - client/server

以下是一個簡單的套接字級程序。 一旦建立了連接,服務器只要他/她想要提供該消息沒有在一段時間內結束就會說話 - 然后只要他/她想要提供該對話沒有結束,客戶端就可以說話。期間 - 對話交替出現,直到有人關閉程序為止 -

我不能得到直到有一段時間部分下來...否則,我不會有問題 - 會有一個一個互動

一旦有人寫道,它就會永遠停留在他們身邊......

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

public class ChatterServer {

    final static int SERVER_PORT = 3333;
    public static void main(String [] args) throws Exception {

        ServerSocket serverSocket = new ServerSocket(SERVER_PORT); 
        System.err.println("Waiting for a client");
        Socket clientSocket = serverSocket.accept();

        System.out.println("Connection requested from: " + clientSocket.getLocalAddress());

        PrintStream toClient = new PrintStream(clientSocket.getOutputStream(), true);
        BufferedReader fromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));

        toClient.println("Whatcha want?"); 
        String incoming = fromClient.readLine();

        while(incoming != null) {

            System.out.println(incoming);
            System.out.print("Your turn>"); 
            String myReply="";

            //this part does not work
            while ( myReply.substring( myReply.length() ) .equals(".") == false){

                myReply = keyboard.readLine(); 
                toClient.println(myReply); 
            }

            incoming = fromClient.readLine();
        }
    }
}

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

public class ChatterClient {
    final static int SERVER_PORT = 3333;
    public static void main(String [] args) throws Exception {

        Socket serverSocket = new Socket(args[0], SERVER_PORT);
        PrintStream toServer =
                new PrintStream(serverSocket.getOutputStream(), true);
        BufferedReader fromServer = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
        BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));

        String incoming = fromServer.readLine();

        while(incoming != null) { 
            System.out.println(incoming);
            System.out.print("Your turn>"); 
            String myReply="";

            while ( myReply.substring( myReply.length() ) .equals(".") == false){
                myReply = keyboard.readLine(); 
                toServer.println(myReply); 
            }//end while

            incoming = fromServer.readLine();
        }//end while
    }//end main

}//end ChatterClient class

更好的方法是使用endsWith方法。 它會工作得很好,看起來更干凈。

 while (!myReply.endsWith(".")){...}

雖然我同意使用String.endsWith ,但代碼中的實際問題是someString.substring(someString.length())始終為空字符串。 你想要someString.substring(someString.length()-1)

暫無
暫無

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

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