网络编程技术文章

简介: 网络编程技术文章

网络编程


使用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方法的话,会直接造成全关闭导致连接断开

相关文章
|
3天前
|
存储 安全 网络安全
云计算与网络安全:技术融合的未来
【6月更文挑战第12天】本文探讨了云计算和网络安全的交叉点,分析了云服务、网络安全和信息安全等技术领域的发展趋势。文章强调了在云环境下保护数据和系统的重要性,并讨论了如何通过技术和策略来实现这一目标。
16 4
|
4天前
|
JSON 前端开发 JavaScript
在JavaScript中,异步编程是一种处理非阻塞操作(如网络请求、文件读写等)的重要技术
【6月更文挑战第12天】JavaScript中的异步编程通过Promise和async/await处理非阻塞操作。Promise管理异步操作的三种状态,防止回调地狱,支持链式调用和并行处理。async/await是ES8引入的语法糖,使异步代码更像同步代码,提高可读性。两者结合使用能更高效地处理复杂异步场景。
16 3
|
2天前
|
机器学习/深度学习 安全 网络安全
云计算与网络安全:技术、挑战与未来
【6月更文挑战第13天】本文探讨了云计算与网络安全的关系,包括云服务、网络安全和信息安全等技术领域。文章首先介绍了云计算的基本概念和优势,然后分析了云计算面临的安全挑战,最后讨论了云计算与网络安全的未来发展趋势。
|
3天前
|
存储 安全 网络安全
云计算与网络安全:技术融合的双刃剑
【6月更文挑战第12天】本文深入探讨了云计算和网络安全之间的紧密关系。随着云服务的普及,网络安全问题日益凸显。文章首先介绍了云服务的基本概念和类型,然后详细讨论了网络安全的重要性以及面临的挑战。接着,文章分析了信息安全在云计算中的关键作用,并提出了相应的防护措施。最后,文章总结了云计算与网络安全的相互影响,强调了技术创新在提升网络安全水平方面的重要作用。
|
3天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与未来发展
云计算与网络安全作为当今信息技术领域的热门话题,不仅在商业应用中发挥着重要作用,也对个人隐私和数据安全产生深远影响。本文将从云服务、网络安全和信息安全等多个技术领域出发,探讨其融合发展的趋势,并对未来发展方向进行展望。
10 2
|
4天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与挑战
【6月更文挑战第11天】随着云计算技术的飞速发展,网络安全问题日益凸显。本文将探讨云计算与网络安全之间的关系,分析云服务、网络安全和信息安全等技术领域的发展趋势,以及如何应对这些挑战。
|
4天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的大学生计算机基础网络教学系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的大学生计算机基础网络教学系统附带文章源码部署视频讲解等
4 0
|
4天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与挑战
【6月更文挑战第10天】本文探讨了云计算与网络安全的紧密联系,分析了云服务、网络安全和信息安全等技术领域的发展及其面临的挑战。通过阐述云计算的基本原理、网络安全的重要性以及信息安全的关键要素,强调了在云计算环境下保障网络安全和信息安全的必要性。
|
4天前
|
安全 网络安全 云计算
云计算与网络安全:技术融合的未来
【6月更文挑战第10天】随着云计算技术的飞速发展,网络安全问题也日益凸显。本文将探讨云计算与网络安全之间的关系,以及如何通过技术手段保障云服务的安全。我们将重点关注云服务、网络安全和信息安全等技术领域的最新进展,以期为读者提供一份全面的技术指南。
11 3
|
6天前
|
前端开发 JavaScript 安全
WebAssembly技术的出现为我们提供了一种全新的解决方案,开启了高性能网络应用的新时代
【6月更文挑战第10天】WebAssembly是高性能网络应用的新时代技术,它是一种虚拟机格式,允许C/C++等语言编译成二进制格式在Web浏览器中运行。具备高性能、高可移植性和良好安全性,适用于游戏开发、图形处理、计算机视觉等领域。随着技术进步,WebAssembly将支持更多语言,结合低代码平台简化开发,但需解决编译优化和安全性等问题。它正重塑Web应用的未来,开启高性能应用新时代。
16 0