【问题标题】:Connection refused when creating a new LAN socket创建新 LAN 套接字时连接被拒绝
【发布时间】:2012-12-09 22:59:17
【问题描述】:

我一直在尝试在 LAN 中的两台计算机之间建立一个非常基本的连接。我查看了几个代码 sn-ps 并从那里开始,但事情似乎在一开始就失败了:创建一个套接字。

我已经尝试连接到我正在执行代码的计算机(使用主机名“Jeroen-DESKTOP”和“Localhost”和本地主机 IP“127.0.0.1”),并连接到我的笔记本电脑(使用“Jeroen-LAPTOP”)。我已经尝试了端口6666 和7598,并在我的防火墙设置中打开了所有到它的TCP 连接。

我使用的代码非常基础:

socket = new Socket("Jeroen-LAPTOP", 6666);
System.out.println(socket.getPort());

错误是:

java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at domain.Client.<init>(Client.java:13)

【问题讨论】:

  • 使用localhost 或127.0.0.1 将不起作用-它们将循环回到同一台计算机。但是 Jeroen-LAPTOP 上运行的是什么?你需要在那个端口上监听...
  • 我在这个概念上遇到了一些问题:当我尝试在我的桌面上创建一个套接字时,我应该在我的笔记本电脑上运行我的程序吗?有没有办法仅在我的桌面上做到这一点?
  • 不清楚您要做什么,但您需要在每台计算机上运行一个程序 - 一个用于侦听端口,另一个用于连接到该端口。跨度>
  • 哦,好吧,这消除了我的大部分误解。后续的小问题:我是否可以假设如果没有另一端已经在监听的服务器套接字,您就无法创建套接字?
  • 确实如此。您希望任何数据流向何处?

标签: java sockets


【解决方案1】:

不知道自己在做什么——

假设您在机器 A 上打开一个套接字并尝试使用机器 B 连接到它,那么 Java 中的典型场景是。

机器 A:

ServerSocket server = new ServerSocket(4444);
Socket connection = server.Accept();

机器 B:

Socket sock = new Socket(MACHINE-A-IP, 4444);

这需要异常处理等才能使其工作。您可以在此处查看示例; http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

关于您的评论 - 是的,您可以在本地运行它们。

【讨论】:

  • 谢谢,我一定会看看这些例子!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 2015-03-24
  • 1970-01-01
相关资源
最近更新 更多