最后更新:2022-07-18 15:13:23 手机定位技术交流文章
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
为了写网络数据,你必须打电话flush()方法。如果不调用flush(),我们很可能会发现,客户端和服务器不接收数据,这不是Java标准库设计问题,相反,当我们把数据写成流形时,这不是直接向网络发送的只写信,相反,先写到内存缓冲器上,直到缓冲区填满,只有一次才能真正发送到网络上,该设计的目的是提高传输效率。如果缓冲区数据小,我们还想强迫这些数据发送到网络上,就必须调用flush()迫使缓冲数据发送出去。
1.InetAddress:用于描述和包装互联网IP地址
| 方法名 | 返回值 |
| getLocalhost() | 返回本地地址包装的实例 |
| getAllByName(String host) | 返回一组InetAddress实例以将主机地址封入 |
| getByName(String host) | 返回一个包装的主机地址的例子。 主机可以是一个域名或合法的IP地址。 |
| InetAddress.getByAddress(addr) | 返回基于地址字符串的InetAddress实例 |
2.DatagramSocket:接收和发送UDP的索克例。
| DatagramSocket() |
|
|
| DatagramSocket(int port) | 创建一个实例并修正端口端口的报告。 通常在服务结束时使用 | |
| DatagramSocket(int port, InetAddress localAddr) | 这是一个非常有用的建模器,因为当机器有多个IP地址时,它创建的实例只能从LocalAddr接收消息。 | |
| receive(DatagramPacket d) | 接收数据报文到d中。receive方法产生一个“阻塞”。“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。 | |
| send(DatagramPacket dp) | 发送dp消息到目的地 | |
| setSoTimeout(int timeout) | 将加班时间单位设置为毫秒。 | |
| close() | 应用程序退出的时候,通常会主动释放资源,关闭Socket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。 |
3.DatagramPacket:用于处理消息,它将数据如字节集、目标地址、目标端口等包入消息中,或者将消息切入字节集。
| DatagramPacket(byte[] buf, int length) | 在包中插入长度数据到Buf阵列中,通常用于接收由客户端发送的数据 |
| DatagramPacket(byte[] buf, int offset, int length) | 将数据包中从Offset开始、Length长的数据装进Buf数组 |
| DatagramPacket(byte[] buf, int length, InetAddress clientAddress, int clientPort) | 从Buf阵列中,长度长度数据被用来创建一个包对象,目标是 clientAddress地址, clientPort端口,通常用于发送数据给客户端。 |
| DatagramPacket(byte[] buf, int offset, int length, InetAddress clientAddress, int clientPort) | 从Buf数组中,取出Offset开始的、Length长的数据创建数据包对象,目标是clientAddress地 址,clientPort端口,通常用来发送数据给客户端。 |
| getData() | 从实例中获取消息的字节组编码。 |
| setDate(byte[] buf) | 将一组字节插入到发送的邮件中。 |
当创建DatagramSocket实例时,客户端不需要指定端口,未使用端口由操作系统自动指定。紧接着,调用setSoTimeout(100)来设置1秒超时,这意味着当UDP包随后收到时,等待时间不得超过一秒。否则,如果未收到UDP包,客户将无限期等待.这与服务器端不同,服务器端可以无限期等待,因为它最初被设计为在生长期间运行。注意,客户端的DatagramSocket还调用Connect()方法来“连接”指定的服务器端。UDP不是未连接的协议吗?你为什么要在这里联系?这个连接()方法不是真正的连接,它旨在在客户端的DatagramSocket实例中存储服务器端的IP和端口号码,确保此DatagramSocket实例只发送UDP包到指定地址和端口,不能发送到其他地址和端口。这不是UDP的限制,相反,Java有内置的安全检查。如果客户端想向两个不同的服务器发送UDP包,然后它必须创建两个DatagramSocket实例。随后的输入和输出数据与服务器端一致。通常来说,客户端必须先发送UDP包,因为客户端不发布UDP包,服务器根本不知道客户端的地址和端口号码。如客户认为该通讯应终止,你可以调用 disconnect()来切断连接。注: disconnect()不是真正的切断,它简单地清除在客户端Datagram Socket实例中记录的远程服务器地址和端口号码。DatagramSocket实例可以连接到另一个服务器端。
本文由 在线网速测试 整理编辑,转载请注明出处。