簡體   English   中英

用Java寫入python套接字服務器

[英]Write to a python socket server in java

我想以字節為單位將字符串寫入java中的套接字服務器,然后接收答案(字節的已知長度)。

我環顧四周,有很多教程,但是我似乎找不到特定的函數來處理字節,而且,我似乎也無法執行這些功能。 這保持紅色下划線。

import java.io.*;
import java.net.Socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;


public class SocketTest {

    public static void main(String [] args) throws IOException {


        String hostName = "localhost";
        int portNumber = 10000;

        try (

                //open a socket
                Socket clientSocket = new Socket(hostName, portNumber);


                BufferedReader in =  new BufferedReader( new InputStreamReader(clientSocket.getInputStream()));
                PrintWriter out =  new PrintWriter(clientSocket.getOutputStream(), true);


        ) {

            System.out.print("Something went wrong");

        }

}


    try {

        out.XXX;   //can't seem to execute any function on this. 
    } catch (Exception e) {
        e.printStackTrace();
    }

首先,要注意的是:您正在濫用try-with-resources語句。

語法為:

try (
    // declare and open resources here
) {
    // use these resources here
}
// resources are closed here, before you even try to...
catch (SomeException e) {
    // catch exceptions
}

然后,在Java中,您具有OutputStreamWriter 第一個寫入字節,第二個寫入字符; 如果Writer包裝了OutputStream ,則需要指定字符集,從該字符集將創建一個編碼器,該編碼器會將您的字符轉換為字節,然后再“沿線”發送。

同樣,您有InputStreamReader ,它們共享相同的關系。

通常,如果未指定要用於ReaderWriter的字符集,則使用默認字符集-可以(也可以不)為UTF-8。

然后在您的代碼中:

  • try后將字節寫入第一個塊;
  • 指定一個用於你的ReaderWriterCharset ;
  • 如果在寫側使用緩沖,請不要在寫后忘記使用.flush() (盡管關閉套接字會自動刷新)。

剩下的作為練習!

暫無
暫無

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

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