互联网上的 Java 套接字 : ConnectException (operation timed out)

标签 java networking

我正在尝试通过 Internet 打开一个网站的套接字,但不能。大约一分钟后,会抛出 ConnectException ,表示操作超时。

Socket clientSocket = new Socket(InetAddress.getByName("gmail.com"), 25);

我的电脑已连接到路由器,该路由器已连接到互联网。我的路由器配置为将所有传入端口 25 的数据定向到本地计算机上的端口 2550 (192.168.2.2)。所以,我想如果我在 Socket 构造函数上设置“本地地址”和“本地端口”参数,它可能会起作用......但这也给了我一个“操作超时”错误。

Socket clientSocket = new Socket(InetAddress.getByName("gmail.com"), 25, InetAddress.getByName("192.168.2.2"), 2550);

我看到了this SO question ,但想知道是否有人可以进一步阐明这个问题。谢谢。

最佳答案

您正在尝试连接到 gmail.com 上的端口 25,但该计算机不是电子邮件服务器。您必须首先查找 gmail.com 的 MX 记录,然后尝试连接到返回的 MX 记录中提到的传送服务器之一。

例如,在我的计算机上使用 dig mx gmail.com,我得到:

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> mx gmail.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34063
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;gmail.com.                     IN      MX

;; ANSWER SECTION:
gmail.com.              1697    IN      MX      30 alt3.gmail-smtp-in.l.google.com.
gmail.com.              1697    IN      MX      40 alt4.gmail-smtp-in.l.google.com.
gmail.com.              1697    IN      MX      5 gmail-smtp-in.l.google.com.
gmail.com.              1697    IN      MX      10 alt1.gmail-smtp-in.l.google.com.
gmail.com.              1697    IN      MX      20 alt2.gmail-smtp-in.l.google.com.

;; AUTHORITY SECTION:
gmail.com.              266895  IN      NS      ns1.google.com.
gmail.com.              266895  IN      NS      ns2.google.com.
gmail.com.              266895  IN      NS      ns3.google.com.
gmail.com.              266895  IN      NS      ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         262525  IN      A       216.239.32.10
ns2.google.com.         262525  IN      A       216.239.34.10
ns3.google.com.         262525  IN      A       216.239.36.10
ns4.google.com.         262525  IN      A       216.239.38.10

;; Query time: 65 msec
;; SERVER: 144.52.10.15#53(144.52.10.15)
;; WHEN: Tue Feb 28 14:30:04 2012
;; MSG SIZE  rcvd: 295

因此请尝试连接到 gmail-smtp-in.l.google.com 上的端口 25(这是 MX 优先级编号最低的服务器)。

关于互联网上的 Java 套接字 : ConnectException (operation timed out),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475073/

相关文章:

java - 尝试编辑丰富选项列表的选定项目时发生并发修改异常

java - jboss如何使用localhost :8080/projectname without "projectname"?

c# - 单声道兼容网络/套接字库

networking - VMWare Fusion 6.0.2 网络桥接仅允许某些特定流量

Eclipse 更新不起作用

java - 包 androidx.databinding 不存在错误

java - 如何从 com.google.datastore.v1.Entity 获取数据存储区实体 ID

java - 如何在Java中组合2个字节的位?

java - 执行 SSL TLS 客户端服务器 Java 程序时出现问题

java - Java 的 OpenID 架构