簡體   English   中英

Java-使用套接字發送對象並使用本地主機以外的地址

[英]Java - Sending objects with sockets and using a address besides localhost

所以我開始學習套接字,發現了兩個問題
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");

因此,我有該代碼,但是每當我嘗試與其連接時,它都會顯示“ Connection refused: connect ”,但是該代碼在localhost上運行良好,並且端口已轉發,因此出了什么問題。
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數字。 而且它不會將結果視為字符串而是一個對象,因此如何保存已發送的對象?

沖洗輸出流

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中配置代理。 您應該使用襪子代理。

在這里,您可以找到公共襪子代理的列表。

由於您使用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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM