Java-使用套接字发送对象并使用localhost之外的地址
所以我开始学习套接字,发现了两个问题Java-使用套接字发送对象并使用localhost之外的地址,java,sockets,Java,Sockets,所以我开始学习套接字,发现了两个问题 一, 所以我有那个代码,但每当我尝试连接它时,它都会说“连接被拒绝:连接”,但该代码在本地主机上运行良好,并且是端口转发的,所以有什么问题。 二, 当我使用该代码时,它不会打印我之前键入的“字符串”,它会给我classname@random数字。它不会将结果视为字符串而是对象,那么如何保存已发送的对象?刷新outputstream out.writeObject("string"); out.flush(); 在服务器端从流中读取数据 String da
一, 所以我有那个代码,但每当我尝试连接它时,它都会说“
连接被拒绝:连接
”,但该代码在本地主机上运行良好,并且是端口转发的,所以有什么问题。二, 当我使用该代码时,它不会打印我之前键入的“字符串”,它会给我
classname@random
数字。它不会将结果视为字符串而是对象,那么如何保存已发送的对象?刷新outputstream
out.writeObject("string");
out.flush();
在服务器端从流中读取数据
String data = in.readLine();// read data from stream sent by client
System.out.println(data);
如果使用
ObjectOutputStream
编写,请使用ObjectInputStream
阅读
ObjectInputStream in = new ObjectInputStream(clientSocket.getInputStream());
String data = in.readUTF();// reading String Object
刷新输出流
out.writeObject("string");
out.flush();
在服务器端从流中读取数据
String data = in.readLine();// read data from stream sent by client
System.out.println(data);
如果使用
ObjectOutputStream
编写,请使用ObjectInputStream
阅读
ObjectInputStream in = new ObjectInputStream(clientSocket.getInputStream());
String data = in.readUTF();// reading String Object
刷新输出流
out.writeObject("string");
out.flush();
在服务器端从流中读取数据
String data = in.readLine();// read data from stream sent by client
System.out.println(data);
如果使用
ObjectOutputStream
编写,请使用ObjectInputStream
阅读
ObjectInputStream in = new ObjectInputStream(clientSocket.getInputStream());
String data = in.readUTF();// reading String Object
刷新输出流
out.writeObject("string");
out.flush();
在服务器端从流中读取数据
String data = in.readLine();// read data from stream sent by client
System.out.println(data);
如果使用
ObjectOutputStream
编写,请使用ObjectInputStream
阅读
ObjectInputStream in = new ObjectInputStream(clientSocket.getInputStream());
String data = in.readUTF();// reading String Object
您的问题不在于java,而在于网络。您通常无法从内部网络访问外部IP 尝试使用外部代理服务器,或要求网络外部的其他人托管客户端或服务器 您可以看到如何在java中配置代理。您应该使用socks代理
您有一个公共socks代理列表。您的问题不在于java,而在于网络。您通常无法从内部网络访问外部IP 尝试使用外部代理服务器,或要求网络外部的其他人托管客户端或服务器 您可以看到如何在java中配置代理。您应该使用socks代理
您有一个公共socks代理列表。您的问题不在于java,而在于网络。您通常无法从内部网络访问外部IP 尝试使用外部代理服务器,或要求网络外部的其他人托管客户端或服务器 您可以看到如何在java中配置代理。您应该使用socks代理
您有一个公共socks代理列表。您的问题不在于java,而在于网络。您通常无法从内部网络访问外部IP 尝试使用外部代理服务器,或要求网络外部的其他人托管客户端或服务器 您可以看到如何在java中配置代理。您应该使用socks代理
您有一个公共socks代理列表。因为您使用的是
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());
由于您使用的是
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());
由于您使用的是
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());
由于您使用的是
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());
out.write()
将数据写入流,但不将其发送到客户端。要将其发送到客户端,您需要刷新流或关闭流。readUTF
属于ObjectInputStream
。我以为您在使用ObjectOutputStream
编写数据时使用了ObjectOutputStream
读取数据,这是我的问题之一。如果您使用ObjectOutputStream
编写数据,那么您应该使用ObjectInputStream
读取数据。write()将数据写入流,但不将其发送给客户端。要将其发送到客户端,您需要刷新流或关闭流。readUTF
属于ObjectInputStream
。我以为您在使用ObjectOutputStream
编写数据时使用了ObjectOutputStream
读取数据,这是我的问题之一。如果您使用ObjectOutputStream
编写数据,那么您应该使用ObjectInputStream
读取数据。write()将数据写入流,但不将其发送给客户端。要将其发送到客户端,您需要刷新流或关闭流。readUTF
属于ObjectInputStream
。我以为您在使用ObjectOutputStream
编写数据时使用了ObjectOutputStream
读取数据,这是我的问题之一。如果您使用ObjectOutputStream
编写数据,那么您应该使用ObjectInputStream
读取数据。write()将数据写入流,但不将其发送给客户端。要将其发送到客户端,您需要刷新流或关闭流。readUTF
属于ObjectInputStream
。我以为你做了Ob