sockets - 套接字客户端连接

标签 sockets networking client

我正在尝试学习如何在java中使用套接字 我输入了 Tutorials point 中的示例但我无法让它工作(套接字客户端示例)。 我所做的唯一更改是,我没有从传入的 args 中获取端口和主机名,而是对端口进行硬编码并获取本地主机。我的代码如下

import java.net.*;
import java.io.*;

public class GreetClient
{
   public static void main(String [] args)
   {
      InetAddress lHost=null;
      try { lHost = InetAddress.getLocalHost(); }
      catch(Exception e) { System.out.println("Local Host Error");}
      int port = 1234;
      try
      {
         System.out.println("Connecting to " + lHost + " on port " + port);
         Socket client = new Socket(lHost, port);
         System.out.println("Just connected to " + client.getRemoteSocketAddress());
         OutputStream outToServer = client.getOutputStream();
         DataOutputStream out = new DataOutputStream(outToServer);

         out.writeUTF("Hello from " + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in = new DataInputStream(inFromServer);
         System.out.println("Server says " + in.readUTF());
         client.close();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

我收到的错误是:

Connecting to Bridgets_laptop/192.168.56.1 on port 1234
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:241)
    at GreetClient.main(GreetClient.java:27)

有什么想法我哪里出错了吗?

最佳答案

“连接被拒绝”部分听起来像是您的防火墙阻止您自己的应用程序访问 Socket1234,或者您尚未打开 ServerSocket 1234 进行连接。

你可以连接到ServerSocket吗

telnet 127.0.0.1 1234

如果您使用Windows?

关于sockets - 套接字客户端连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27404283/

相关文章:

flash - URLLoader 轮询时卡住

java:关闭客户端套接字重置服务器套接字

c - 客户端 select() 的替代方法

java - 等待很长时间后套接字连接失败

java - 将捕获的图像从 Java 发送到 Android 时出错

javascript - Node.js 和 ws : Easiest way to stream an array

java - 大量数据 - 发送它们的最佳方式是什么?

java - 如何通过其他计算机的桌面应用程序访问存储在不同计算机上的oracle数据库

java - Datastax Cassandra Native Java Driver - 使用 Query Builder 有性能优势吗?

AWS Redis 集群的 Python 客户端