簡體   English   中英

Java中的簡單TCP

[英]Simple TCP in Java

我開始學習有關使用Java進行網絡編程的知識。 這是我的第一個,但似乎我做對了。 斷絕:

public class Server1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            ServerSocket server = new ServerSocket(2508);
            Socket client = server.accept();
            System.out.println("Connected");
            while(true){
                BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
                String str = br.readLine();
                int num = Integer.parseInt(str);
                if(num%2==0){
                    bw.write("Even");
                }else{
                    bw.write("Odd");
                }
                bw.newLine();
                bw.flush();

            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

客戶:

public class EvenOddClient1 {
    public static void main(String[] args) {
        try {
            Socket client = new Socket("Localhost", 2508);
            while(true){
                Scanner s = new Scanner(System.in);
                BufferedWriter bw = new BufferedWriter(
                        new OutputStreamWriter(client.getOutputStream()));
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(client.getInputStream()));
                int num = s.nextInt();
                bw.write(num);
                bw.newLine();
                bw.flush();
                String str = br.readLine();
                System.out.println(str);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

我認為我的代碼無法讀取客戶的電話號碼。 感謝幫助

您正在客戶端中以二進制格式(作為int )發送整數:

int num = s.nextInt();
bw.write(num);

並且您將其視為服務器中的字符串:

String str = br.readLine();
int num = Integer.parseInt(str);

向客戶端發送“ 3” (例如)時在服務器中導致錯誤:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at Server1.main(Server1.java:21)

這將關閉連接。

在您的客戶端中,改為執行以下操作,將int作為String發送:

int num = s.nextInt();
bw.write( new Integer( num ).toString() );

暫無
暫無

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

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