博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之网络编程
阅读量:6329 次
发布时间:2019-06-22

本文共 2815 字,大约阅读时间需要 9 分钟。

    网络编程

1. java.net.InetAddress:此类表示互联网协议 (IP) 地址。

静态方法:可以获取InetAddress对象
static InetAddress getLocalHost() 返回本地主机。
static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。
非静态的方法:
String getHostAddress() 返回 IP 地址字符串(以文本表现形式)。
String getHostName() 获取此 IP 地址的主机名。

2. UDP通信的发送端:把数据打包,发送的接收端

和udp相关的类:
java.net.DatagramPacket:此类表示数据报包。 用来封装数据
java.net.DatagramSocket:此类表示用来发送和接收数据报包的套接字。
套接字:封装了ip地址和端口号的网络对象
构造方法:
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
DatagramSocket()
构造数据报套接字并将其绑定到本地主机上任何可用的端口。
DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。
DatagramSocket类的成员方法:
void send(DatagramPacket p) 从此套接字发送数据报包。
实现步骤:
1.创建DatagramPacket对象,封装要发的数据,指定数据的长度;指定接收端的IP地址对象和端口号
2.创建DatagramSocket对象,用来发送数据报包(是一个网络对象,可以和系统要指定的端口号,不要指定的系统会随机分配)
3.使用DatagramSocket中的方法send发送数据报包到接收端
4.释放资源
UDP通信叫面向无连接通信,不用管接收端是否存在,是否能收到数据,可以直接发送
如果接收端不存在,就会出现数据的丢失

 

UDP通信的接收端:接收发送端发送的数据,进行拆包
和udp相关的类:
java.net.DatagramPacket:此类表示数据报包。 用来封装数据
java.net.DatagramSocket:此类表示用来发送和接收数据报包的套接字。
套接字:封装了ip地址和端口号的网络对象
构造方法:
DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包。
DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。
DatagramSocket的成员方法:
void receive(DatagramPacket p) 从此套接字接收数据报包。
实现步骤:
1.创建DatagramPacket对象,封装字节数组,用来接收发送端的数据
2.创建DatagramSocket对象,和系统要指定的端口号
3.调用DatagramSocket对象中的方法receive接收发送端的数据报包
4.拆包,可以使用DatagramPacket中的方法
获取到发送端数据的长度
int getLength() 返回将要发送或接收到的数据的长度。
获取到发送端的ip地址对象
InetAddress getAddress()
获取到发送端的端口号
int getPort()
5.释放资源

3. TCP通信的客户端:和服务器建立连接(3次握手),给服务器发送数据,读取服务器回写的数据

表示客户端的类:
java.net.Socket:此类实现客户端套接字(也可以就叫“套接字”)。
构造方法:
Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
成员方法:
OutputStream getOutputStream() 返回此套接字的输出流。
InputStream getInputStream() 返回此套接字的输入流。
注意:客户端和服务器进行交互,不能使用自己创建的字节流对象,必须使用Socket中提高的网络流对象
实现步骤:
1.创建客户端Socket对象,封装服务器的IP地址和端口号(创建对象的过程,就是客户端和服务经过3次握手建立连接的过程)
2.使用Socket中的方法getOutputStream,获取网络字节输出流对象
3.使用OutputStream网络字节输出流中的方法write往服务发送数据
4.使用Socket中的方法getInputStream,获取网络字节输入流对象
5.使用InputStream网络字节输入流对象中的方法read,读取服务器回写的数据
6.释放资源(Socket)
TCP通信是面向连接的通信,必须先启动服务器,客户端才能和服务器经过3次握手建立连接
否则会抛出连接的异常:ConnectException: Connection refused: connect

 

TCP通信的服务器端:和客户端通过3次握手,建立连接;接收客户端发送的数据,给客户端回写数据

表示服务器的类:
java.net.ServerSocket:此类实现服务器套接字。
构造方法:
ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
服务器有一件特别重要的事情,必须的明确是哪个客户端连接的服务器
可以使用accept方法获取,请求的客户端对象
成员方法:
Socket accept() 侦听并接受到此套接字的连接。
实现步骤:
1.创建服务器ServerSocket对象,和系统要指定的端口号
2.使用ServerSocket对象中的方法accept,获取请求的客户端对象Socket
3.使用Socket中的方法getInputStream,获取网络字节输入流对象
4.使用InputStream网络字节输入流对象中的方法read,读取客户端发送的数据
5.使用Socket中的方法getOutputStream,获取网络字节输出流对象
6.使用OutputStream网络字节输出流中的方法write,给客户端回写数据
7.释放资源(Socket,ServerSocket)

 

转载于:https://www.cnblogs.com/youyouxiaosheng-lh/p/8343327.html

你可能感兴趣的文章
HDU 1255 覆盖的面积(矩形面积交)
查看>>
Combinations
查看>>
SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。...
查看>>
第二十一章流 3用cin输入
查看>>
在workflow中,无法为实例 ID“...”传递接口类型“...”上的事件“...” 问题的解决方法。...
查看>>
获取SQL数据库中的数据库名、所有表名、所有字段名、列描述
查看>>
Orchard 视频资料
查看>>
简述:预处理、编译、汇编、链接
查看>>
调试网页PAIP HTML的调试与分析工具
查看>>
路径工程OpenCV依赖文件路径自动添加方法
查看>>
玩转SSRS第七篇---报表订阅
查看>>
WinCE API
查看>>
POJ 3280 Cheapest Palindrome(DP 回文变形)
查看>>
oracle修改内存使用和性能调节,SGA
查看>>
SQL语言基础
查看>>
对事件处理的错误使用
查看>>
最大熵模型(二)朗格朗日函数
查看>>
深入了解setInterval方法
查看>>
html img Src base64 图片显示
查看>>
[Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction...
查看>>