JavaSE基础精选-网络编程

简介: JavaSE基础精选-网络编程

网络编程

使用ip地址来确定目标主机,使用端口号来确定哪个进程

使用

UDP编程

原理

通过传输层,将数据转换为数据包发送

udp协议是无连接的、不可靠的

发送端步骤

  • 创建发送端的socket对象
  • 把要发送的数据封装成数据报包(五个参数的)
  • 利用send方法发送
  • close

接收端步骤

  • 创建接收端的socket对象
  • 创建用于接收的数据报包(此时是空包)
  • 利用receive方法去接收数据报包(接收完了后包里才有数据)
  • 解析数据报包
  • close

DatagramSocket

此类表示用来发送和接收数据报包的套接字。

构造方法

DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。

成员方法

void receive(DatagramPacket p) 从此套接字接收数据报包。
void send(DatagramPacket p) 从此套接字发送数据报包。

DatagramPacket

此类表示数据报包。

构造方法

构建用法发送的数据报包

DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。

构建用于接收的数据报包

DatagramPacket(byte[] buf, int offset, int length) 构造 DatagramPacket,用来接收长度为 length 的包,在缓冲区中指定了偏移量。

成员方法

byte[] getData() 返回数据缓冲区。
int getLength() 返回将要发送或接收到的数据的长度。
int getOffset() 返回将要发送或接收到的数据的偏移量。

注意:如果要想实现互相聊天的功能,必须使用多线程,否则会产生只能你发一句然后我等待之后才能发送的情况,因为是串行的

TCP编程

原理

服务端创建一个ServerSocket,利用accept方法侦听客户端的连接,以此来获取Socket对象,可以从中获取输入输出流与客户端通信

客户端创建客户端的Socket对象,可以从中获取输入输出流与服务端通信

TCP协议是有连接的、可靠的;建立连接是在网际层

客户端步骤(Client)

  • 创建客户端Socket对象
  • 从中获取输入输出流
  • 从输入 输出流中读取 写入 数据
  • close

服务端步骤(Server)

  • 创建服务端的Socket对象 ServerSocket
  • 利用accept方法去建立连接,得到Socket对象
  • 从socket对象中获取输入 输出流
  • 可以利用输入输出流 读写数据
  • close

Socket

此类实现客户端套接字(也可以就叫“套接字”

构造方法

Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。

成员方法

InputStream getInputStream() 返回此套接字的输入流。
OutputStream getOutputStream() 返回此套接字的输出流。
void shutdownOutput() 禁用此套接字的输出流

socket.getInetAddress 可以获取正在通信的ip地址

ServerSocket

此类实现服务器套接字

构造方法

ServerSocket(int port) 创建绑定到特定端口的服务器套接字。

成员方法

Socket accept() 侦听并接受到此套接字的连接

必须要先启动服务端再启动客户端,否则会抛出连接异常

java.net.ConnectException: Connection refused: connect

socket的半关闭

shutdownOutput() 禁用流

在实现客户端上传文件,服务端给出反馈的时候,如果不禁用流的话会造成服务端一直等待客户端发送而不继续往下执行的情况,因为服务端无法知道客户端已经发送完毕,因此需要使用shutdownOutput() 关闭流来通知服务端,这就是半关闭。如果直接调用流的close方法的话,会直接造成全关闭导致连接断开

目录
相关文章
|
4月前
|
网络协议 Java
【JavaSE】网络编程
【JavaSE】网络编程
48 0
|
网络协议 安全 Java
【JavaSE】Java基础语法(三十九):网络编程入门
1. 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络 操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络编程 在网络通信协议下,不同计算机上运行的程序,可以进行数据传输
|
网络协议 Java
JavaSE:第十五章:网络编程
JavaSE:第十五章:网络编程
JavaSE:第十五章:网络编程
|
域名解析 网络协议 Java
【JavaSE】之网络编程(下)
【JavaSE】之网络编程(下)
100 0
|
编解码 网络协议 Oracle
【JavaSE】之网络编程(上)
【JavaSE】之网络编程
122 0
|
网络协议 Java
10 - JavaSE之网络编程
网络编程 网络通信协议分层思想 为什么要分层呢?因为整个网络协议非常复杂,要涉及到方方面面的知识,而且还有对底层硬件的操作,利用分层的思想,我们可以将复杂的通信协议分割成一层层的形式,上一层可以调用下一层,而与再下一层不发生关系,各层之间互不影响,便于系统的开发。
1210 0
|
2月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
2月前
|
Java 大数据
如何在Java中进行网络编程:Socket与NIO
如何在Java中进行网络编程:Socket与NIO
|
2月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
2月前
|
网络协议 Java 网络安全
Java中的网络编程:TCP详解
Java中的网络编程:TCP详解