首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
套接字的使用
时间:
2015-07-14 15:51:16
阅读:
121
评论:
0
收藏:
0
[点我收藏+]
标签:
Java使用了两套类来实现套接字:一套是 socket 和 serversocket 类,基于 tcp 协议实现;一套是 datagramsocket 类,基于udp协议实现。
一、socket类
socket类有四种构造函数:
(1)socket(string address, int port)
该构造函数指定了本机的地址和端口号,并且会检索该制定的端口号是否开放。
(2)socket(inetaddress address, int port)
同(1),但不会抛出 unknowhostexception 异常。
(3)socket(string host, int port, inetaddress localaddress, int localport)
该函数建立连接到特定的主机和端口的套接字,并会绑定到特定的本地端口和地址。这些本地参数主要是针对多地址的主机。如果主机名称不能解析,则不能建立连接。
(4)socket(inetaddress host, int port, inetaddress localaddress, int localport)
同(3),只是对于远端主机用 inetaddress 标注。
从socket中获取信息的方法:
(1)getInetAddress
返回套接字连接到的远端主机的地址
(2)getPort
返回套接字连接到的远端主机的端口号
(3)getLocalPort
返回套接字绑定在本地主机的端口号
(4)getLocalAddress
返回套接字关联的本地主机的地址
(5)getInputStream
从套接字中读取数据,并以流的形式传到程序中。可以用 DataInputStream 或者 InputStreamWriter 等装饰类来封装读取的流。
(6)getOutputStream
写入信息到远程对象上,所获得的输出流可以用别的装饰类进行封装,像DataOutputStream 或者 OutputStreamWriter。
二、serversocket类
socket类是客户端的socket,而 serversocket 类是 Java 中用来实现服务器端的类。服务器端程序与客户端程序的区别仅在于,服务器需要绑定特定的端口来使用 serversocket 对象。
serversocket 类的构造方法:
(1)ServerSocket(int port, int queuelength, inetAddress bindingaddress)
指定端口号,请求队列长度以及绑定地址。
(2)ServerSocket(int port)
该构造函数创建在一个指定的端口上,若是系统默认的端口,则由系统自动选择。对于不同机器、不同运行时间,运行结果会不一致。
(3)ServerSocket(int port, int queuelength)
把服务器套接字绑定到特定的端口号,并为队列分配足够的空间来支持特定数量的客户端套接字。
serversocket类中最重要的方法是accept(),用于接受客户端的连接请求,这是一个阻塞 I/O 操作。当连接建立的时候,它将作为socket对象被返回。
三、datagramsocket类
datagramsocket(自寻址套接字),是使用自寻址发送寻址信息。自寻址信息包含在自寻址包里面,自寻址包又包含在IP包里面。
datagramsocket包含了三个类:datagrampacket, datagramsocket 和 multicastsocket。datagrampacket 描述了自寻址包的地址信息, datagramsocket 表示了客户端程序和服务器程序自寻址套接字,而 multicastsocket 描述了能进行多点传送的自寻址套接字。以上3个类都位于java.net 包里面。
(1)datagrampacket类
地址信息和自寻址包以字节数组的方式同时压缩到 datagrampacket 类创建的对象里面。 datagrampacket 有多个构造函数:
datagrampacket(byte [] buffer, int length),
该构造函数确定了自寻址数据包数组和数组的长度,关于自寻址数据包的地址和端口信息可以在后面通过调用 setaddress(inetaddress addr) 和 setport(int port) 来确定。
datagrampacket(byte [] buffer, int length, InetAddress addr, int port)
,该构造函数同时包含了地址和端口信息。
(2)datagramsocket类
datagramsocket 类在客户端创建自寻址套接字与服务器端进行通信连接,并发送和接收自寻址套接字。一般编程中,客户端创建自寻址套接字使用 DatagramSocket() 函数,而服务器则使用 DatagramSocket(port) 函数。一旦 datagramsocket 对象创建成功,则通过 receive(datagrampacket packet) 和 send(datagrampacket packet) 方法进行自寻址数据包的接收和发送。获取数据包之后可以通过 getData() 方法来返回自寻址数据包的一个引用。
(3)multicastsocket 类
网络API通过 multicastsocket 类和 multicastsocket 函数来支持多点传送。当一个客户程序要加入多点传送组的时候,就需要创建一个 multicastsocket 对象。 multicastsocket(int port) 构造函数允许应用程序通过指定的端口来接收自寻址包。加入多点传送组的时候使用joinGroup()方法,离开传送组的时候使用 leaveGroup()方法。由于 multicastsocket 拓展了 datagramsocket 类,所以 multicastsocket 对象就能够访问 datagramsocket 的方法,即通过 receive(datagrampacket packet) 和 send(datagrampacket packet) 方法进行自寻址数据包的接收和发送。
版权声明:本文为博主原创文章,未经博主允许不得转载。
套接字的使用
标签:
原文地址:http://blog.csdn.net/liuruiqun/article/details/46876369
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!