快速业务通道

Java网络编程从入门到精通(14):多种多样的建立网络连接的方式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
(3) 时间:2011-01-12

二、通过connect方法连接服务器

Socket类不仅可以通过构造方法直接连接服务器,而且还可以建立未连接的Socket对象,并通过connect方法来连接服务器。Socket类的connect方法有两个重载形式:

1.public void connect(SocketAddress endpoint) throws IOException

Socket类的connect方法和它的构造方法在描述服务器信息(IP和端口)上有一些差异。在connect方法中并未象构造方法中以字符串形式的host和整数形式的port作为参数,而是直接将IP和端口封装在了SocketAddress类的子类InetSocketAddress中。可按如下形式使用这个connect方法:

Socket socket = new Socket(); socket.connect(new InetSocketAddress(host, port));

2.public void connect(SocketAddress endpoint, int timeout) throws IOException

这个connect方法和第一个connect类似,只是多了一个timeout参数。这个参数表示连接的超时时间,单位是毫秒。使用timeout设为0,则使用默认的超时时间。

在使用Socket类的构造方法连接服务器时可以直接通过构造方法绑定本地IP,而connect方法可以通过Socket类的bind方法来绑定本地IP.例程4-9演示如何使用connect方法和bind方法。

package mysocket; import java.net.*; public class MoreConnection2 {      public static void main(String[] args)      {          try          {              Socket socket1 = new Socket();              Socket socket2 = new Socket();              Socket socket3 = new Socket();              socket1.connect(new InetSocketAddress("200.200.200.4", 80));              socket1.close();              System.out.println("socket1连接成功!");              /*                 将socket2绑定到192.168.18.252将产生一个IOException错误              socket2.bind(new InetSocketAddress("192.168.18.252", 0));              */              socket2.bind(new InetSocketAddress("200.200.200.200", 0));              socket2.connect(new InetSocketAddress("200.200.200.4", 80));              socket2.close();              System.out.println("socket2连接成功!");              socket3.bind(new InetSocketAddress("192.168.18.252", 0));              socket3.connect(new InetSocketAddress("200.200.200.4", 80), 2000);              socket3.close();              System.out.println("socket3连接成功!");          }          catch (Exception e)          {              System.out.println(e.getMessage());          }      } }

上面的代码的输出结果为:

socket1连接成功! socket2连接成功! Connection timed out: connect

在上面代码中的socket3连接服务器时为其设置了超时时间(2000毫秒),因此,socket3在非常短的时间就抛出了IOException错误。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号