分享
 
 
 

Java网络编程之传输控制协议(二)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

四、Socket类

Socket类表现了客户端套接字,它是属于一台或两台计算机的两个TCP通讯端口之间的通讯通道。端口可以连接到本地系统的另一个端口,这样可以避免使用另一台计算机,但是大多数网络软件将使用两台计算机。但是TCP套接字不能与两台以上的计算机通讯。假如需要这种功能,客户端应用程序必须建立多个套接字连接,每台计算机一个套接字。

构造函数

Java.net.Socket类有几个构造函数。其中两个构造函数答应使用布尔型参数指定是否使用UDP或TCP套接字,我们不赞成使用它们。这儿没有使用这两个构造函数,并且没有列举在此处--假如需要UDP功能,请使用DatagramSocket。

try

{

// 连接到指定的主机和端口

Socket mySocket = new Socket ( "www.awl.com", 80);

// ......

}

catch (Exception e)

{

System.err.println ("Err - " + e);

}

但是还有很多构造函数可以用于不同的情形。除非非凡指出,所有的构造函数都是公共的。

· protected Socket ()-使用当前套接字产生组件提供的默认实现建立不连接的套接字。开发者一般不应该使用这个方法,因为它不答应指定主机名称和端口。

· Socket (InetAddress address, int port)产生 java.io.IOException异常。

· java.lang.SecurityException-建立连接到指定的IP地址和端口的套接字。假如不能建立连接,或连接到主机违反了安全性约束条件(例如某个小的服务程序试图连接到某台计算机而不是载入它的计算机时),就产生这种异常。

· Socket (InetAddress address, int port, InetAddress localAddress, int localPort)产生java.io.IOException、java.lang.SecurityException异常-建立连接到指定的地址和端口的套接字,并把它绑定到特定的本地地址和本地端口。默认情况下,使用一个自由(空)的端口,但是在多地址主机环境(例如本地主机有两个或多个的计算机)中,该方法也答应你指定一个特定的端口号、地址。

· protected Socket (SocketImpl implementation)--使用特定的套接字的实现(implementation)建立未连接的套接字。通常情况下开发者不应该使用这个方法,因为它答应指定主机名称和端口。

· Socket (String host, int port)产生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException异常--建立连接到特定主机和端口的套接字。这个方法答应指定一个字符串而不是一个InetAddress。假如指定的主机名称不能够解析,就不能建立连接,假如违反了安全性约束条件就产生异常。

· Socket (String host, int port, InetAddress localAddress, int localPort)产生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException异常--建立连接到特定主机和端口的套接字,并绑定到特定的本地端口和地址。它答应指定字符串形式的主机名称,而不是指定InetAddress实例,同时它答应指定一个将绑定的本地地址和端口。这些本地参数对于多地址主机(假如可以通过两个或更多IP地址访问的计算机)是有用的。假如主机名称不能解析,就不能建立连接,假如违反了安全性约束条件会产生异常。

1、建立套接字

在正常环境下,建立套接字的时候它就连接了某台计算机和端口。尽管有一个空的构造函数,它不需要主机名称或端口,但是它是受保护的(protected),在正常的应用程序中不能够调用它。此外,不存在用于在以后指定这些细节信息的connect()方法,因此在正常的环境下建立套接字的时候就应该连接了。假如网络是好的,在建立连接的时候,调用套接字构造函数将立即返回,但是假如远程计算机没有响应,构造函数方法可能会阻塞一段时间。这是随着系统的不同而不同的,它依靠于多种因素,例如正在使用的操作系统和默认的网络超时设置(例如本地局域网中的一些计算机一般比Internet上的计算机响应得快)。你甚至不能肯定套接字将阻塞多长的时间,但是这是非正常的行为,并且它不会频繁出现。即使如此,在要害事务系统中把此类调用放在第二个线程中或许更合适,这样可以防止应用程序停止。

注重

在较低的层次,套接字是由套接字产生组件(socket factory)产生的,它是一个负责建立适当的套接字实现的非凡的类。在正常环境下,将会产生标准的java.net.Socket,但是在一些非凡的情形中,例如使用自定义套接字的非凡的网络环境(例如通过使用非凡的代理服务器穿透防火墙),套接字产生组件实际上可能返回一个套接字子类(subclass)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有