[英]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中,您具有OutputStream
和Writer
; 第一個寫入字節,第二個寫入字符; 如果Writer
包裝了OutputStream
,則需要指定字符集,從該字符集將創建一個編碼器,該編碼器會將您的字符轉換為字節,然后再“沿線”發送。
同樣,您有InputStream
和Reader
,它們共享相同的關系。
通常,如果未指定要用於Reader
或Writer
的字符集,則使用默認字符集-可以(也可以不)為UTF-8。
然后在您的代碼中:
try
后將字節寫入第一個塊; Reader
和Writer
的Charset
; .flush()
(盡管關閉套接字會自動刷新)。 剩下的作為練習!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.