[英]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.