菜猪的JAVA 网络编程学习之Socket用法详解(上)
来源:互联网 发布:c语言1000以内水仙花数 编辑:程序博客网 时间:2024/05/22 15:43
在客户/服务器通信模式中,客户端需要主动创建与服务器连接的Socket(套接字),服务器端收到了客户端的连接请求,也会创建与客户连接的Socket。Socket可以看做是通信连接两端的收发器,服务器与客户端都通过Socket来收发数据。
构造Socket
(1)Socket的构造方法有以下几种重载形式:
除了第一个不带参数的构造方法外,其他构造方法都会试图建立与服务器的连接,如果连接成功,就返回Socket对象;如果因为某些原因连接失败,就会抛出IOException。
(2)设定等待建立连接超时时间:
客户端的Socket的构造方法请求与服务器连接时,默认情况下,Socket的构造方法要一直等待下去,知道连接成功或者出现异常。如需要限定等待时间,需要使用不带参数的构造方法:
如果超过一分钟后,既没有连接成功,也没有出现其他异常,那么会抛出SocketTimeoutExcetion。
(3)InetAddress类
(4)客户Socket连接服务器可能抛出的异常
IOException
____UnknownHostException
____InterruptedIoException
________SocketTimeoutException
____SocketException
________BindException
________ConnectException
获取Socket的信息
以下方法用于获取Socket的有关信息:
getInetAddress():
getPort():
getLocalAddress():
getLocalPort():
getInputStream():获得输入流。如果Socket还没有连接,或者已经关闭,或者已经通过shutdownInput()方法关闭输入流,那么此方法会抛出IOException。
getOutputStream():获得输出流。如果Socket还没有连接,或者已经关闭,或者已经通过shutdownOutput()方法关闭输入流,那么此方法会抛出IOException。
关闭Socket
为了保证关闭Socket的操作总是执行的,强烈建议把这个操作放在finally代码块中:
Socket提供的3个状态测试方法:
isClosed():是判断客户端是否已经调用过close()方法了。这个方法并不是判断服务端是否已经断开连接了(PS:有的书上说得那叫什么啊,就不提名字了)
isConnected():如果Socket曾经连接到远程主机,则返回true,否则返回false。
isBound():如果Socket已经与一个本地端口绑定,则返回true,否则返回false。
如果要判断一个Socket对象是否处于连接状态,可采用以下方式:
在学习的过程中,发现有的书写的总体来说不错,但是个别地方存在着致命的错误,要小心!
- 菜猪的JAVA 网络编程学习之Socket用法详解(上)
- java网络编程之Socket用法详解一
- java网络编程02-Socket用法详解
- java网络编程---socket用法详解(学习心得)
- JAVA网络编程之Socket用法
- java 网络编程之Socket详解
- JAVA学习笔记(网络编程 之 socket)
- Java网络编程上之Socket服务端编程
- Java网络编程之Socket的使用
- Java网络socket编程详解
- Java网络socket编程详解
- Java网络socket编程详解
- Java网络socket编程详解
- Java网络(Socket编程)详解
- Java网络socket编程详解
- Java网络socket编程详解
- java网络socket编程详解
- java网络socket编程详解
- 扩展Struts2--自定义String和XML格式的Result
- extJs tree add edit delete js代码
- ROM、RAM、DRAM、SRAM、FLASH的区别
- Windows Live Messenger 2009 登录错误 80040154或不能登录 的解决办法
- 传智播客struts学习,Struts的概念和体系结构
- 菜猪的JAVA 网络编程学习之Socket用法详解(上)
- openmeetings052安装记录
- Oracle数据库重复数据删除的三种情况收藏
- ORACLE管理员指南(二):创建oracle数据库
- System.Drawing.Image.FromFile()获取客户端图片的弊端?
- 优化数据库大幅度提高Oracle的性能收藏
- strlen和sizeof函数区别(深入理解)
- Silverlight 的控件生命周期
- Creating Spatial Information Infrastructures: Towards the Spatial Semantic Web