gpt4 book ai didi

Java - 使用套接字发送对象并使用本地主机之外的地址

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

所以我开始学习socket,我发现了两个问题
1.

   InetAddress address = InetAddress.getByName("75.73.111.104");
@SuppressWarnings("resource")
Socket socket = new Socket(address, 57823);
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.writeObject("string");

所以我有该代码,但每当我尝试连接它时,它都会说“连接被拒绝:连接”但是该代码在本地主机上运行良好,并且它是端口转发的,所以这有什么问题。
2.

@SuppressWarnings("resource")
ServerSocket serverSocket = new ServerSocket(57823);
Socket clientSocket = serverSocket.accept();
ObjectOutputStream out = new ObjectOutputStream(clientSocket.getOutputStream());
BufferedInputStream in = new BufferedInputStream(clientSocket.getInputStream());
if(in.toString() != null)
{
System.out.println(in.toString());
}

当我使用该代码时,它不会打印我之前输入的“字符串”,它会为我提供classname@random数字。它不会将结果视为字符串,而是将结果视为对象,那么如何保存已发送的对象?

最佳答案

由于您使用 ObjectOutputStream 来序列化对象,因此您需要使用互补的 ObjectInputStream 来反序列化另一侧的对象。

我认为 ObjectInputStream.readObject() 方法应该可以解决问题。

我自己还没有测试过,但尝试一下,看看会发生什么:

@SuppressWarnings("resource")
ServerSocket serverSocket = new ServerSocket(57823);
Socket clientSocket = serverSocket.accept();
ObjectInputStream in = new ObjectInputStream(clientSocket.getInputStream());
System.out.println(in.readObject());

关于Java - 使用套接字发送对象并使用本地主机之外的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734590/

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