Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet上的Java套接字:ConnectException(操作超时)_Java_Networking - Fatal编程技术网

Internet上的Java套接字:ConnectException(操作超时)

Internet上的Java套接字:ConnectException(操作超时),java,networking,Java,Networking,我正在尝试通过Internet打开一个网站的套接字,但无法打开。大约一分钟后,抛出一个ConnectException,表示操作超时 Socket clientSocket = new Socket(InetAddress.getByName("gmail.com"), 25); 我的电脑连接到路由器,路由器连接到互联网。我的路由器配置为将所有传入端口25数据定向到本地机器(192.168.2.2)上的端口2550。因此,我想如果我在套接字构造函数上设置“local address”和“loc

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

Socket clientSocket = new Socket(InetAddress.getByName("gmail.com"), 25);
我的电脑连接到路由器,路由器连接到互联网。我的路由器配置为将所有传入端口25数据定向到本地机器(192.168.2.2)上的端口2550。因此,我想如果我在
套接字
构造函数上设置“local address”和“local port”参数,它可能会工作……但这也会给我一个“操作超时”错误


我看到了,但想知道是否有人能在这个问题上透露更多的信息。谢谢。

您正试图连接到
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
;挖掘9.3.6-P1-RedHat-9.3.6-16.P1.el5 mx gmail.com
;; 全局选项:printcmd
;; 得到答案:

;; ->>HEADER那么你想接收从谷歌发送到路由器的邮件信息?这是将传入流量从端口25转发到端口2550的唯一原因。如果要这样做,则需要使用ServerSocket在192.168.2.2服务器上接收传入连接。您遇到的问题是套接字启动到服务器的连接。这是一个客户端套接字。ServerSocket等待传入的连接。对ServerSockets的工作原理做一点研究,但是如果你真的想接收传入的连接,你必须实现SMTP协议,这是一项不小的成就。有一些SMTP库可以重用。检查apachejames项目,它类似于邮件服务器的servlet


您的路由器配置仅用于传入连接,而不是传出连接。@NayukiMinase或带有DNS提供程序的JNDI。Wooo!!成功了!但gmail将我的电子邮件标记为垃圾邮件(MX记录是SMTP的一部分吗?我正在尝试编写一个SMTP服务器,并认为发送电子邮件只需打开电子邮件主机部分(在“@”之后的部分)的套接字即可。)。不过,我让服务器部分正常工作,所以至少我可以接收电子邮件。@Michael:是的,MX是SMTP规范的一部分。请参阅。@GregHewgill您知道使用端口25还是587更好吗?我认为587应该是新的标准。这两个端口用于不同的目的。通常,端口25上的传入连接被视为一个新的标准“外面”连接,用于向本地用户发送邮件。端口587上的连接被视为来自本地域用户的连接,打算将邮件发送到其他地方。Gmail要求Gmail用户使用端口587发送邮件,因为它需要对端口587上的所有连接进行身份验证。SMTP的许多问题,例如“开放式中继”源于对端口25的两种用途的使用“部分工作。因此,我可以从我的Gmail帐户发送电子邮件,我的SMTP服务器将正确接收它。实际上并不太复杂……我能够编写一个程序,通过阅读SMTP Wikipedia页面来接收电子邮件。我从头开始创建SMTP服务器,因为我想了解电子邮件的工作原理。
; <<>> 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