gpt4 book ai didi

java - 在java中写入python套接字服务器

转载 作者:行者123 更新时间:2023-12-01 12:11:24 26 4
gpt4 key购买 nike

我想以字节为单位将字符串写入java中的套接字服务器,然后接收答案(已知的字节长度)。

我环顾四周,有很多教程,但我似乎找不到处理字节的特定函数,而且,我似乎无法在 out 上执行函数。这保持红色下划线。

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后的第一个 block ;
  • 指定用于您的ReaderWriterCharset
  • 如果您在写入端使用缓冲,请不要忘记在写入后.flush()(尽管关闭套接字会自动刷新)。

剩下的就作为练习吧!

关于java - 在java中写入python套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com