[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
其他
> 详细
套接字的使用
时间:
2015-07-14 15:48:04
阅读:
182
评论:
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年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!