java

位置:IT落伍者 >> java >> 浏览文章

JAVA 的Socket机制


发布日期:2020年11月13日
 
JAVA 的Socket机制

Socket机制用到的类有ServerSocketSocket等服务器端以监听端口号和接受队列长度为参数实例化ServerSocket类缺省的队列长度是以accept()方法接收客户的连接客户端则直接以服务器的地址和监听端口为参数实例化Socket类连接服务器缺省的连接方式是stream socket(区别于datagram socket)

服务器端和客户端调用getInputStream()和getOutputStream()方法得到输入/输出流如果以ObjectInputStream和ObjectOutputStream包装Socket的输入/输出流要注意一点ObjectOutputStream类实例化时要向底层流写入一个标识码ObjectInputStream类相应的读入该标识码如果实例化的次序不当会引起死锁建议客户服务器两端都先实例化ObjectOutputStream

因为调用ServerSocket类的accept()方法和Socket输入流的read()方法时会引起线程阻塞所以应该用setSoTimeout()方法设置超时缺省的设置是即超时永远不会发生超时的判断是累计式的一次设置后每次调用引起的阻塞时间都从该值中扣除直至另一次超时设置或有超时异常抛出比如某种服务需要三次调用read()超时设置为分钟那么如果某次服务三次read()调用的总时间超过分钟就会有异常抛出如果要在同一个Socket上反复进行这种服务就要在每次服务之前设置一次超时

上一篇:Java web解决常见编码出现的问题

下一篇:把Java开发从中文Windows迁移到Ubuntu