网络编程(1)

编写代码实现跨主机之间的通信。

1.套接字

应用层(程序)调用传输层(操作系统)的一组函数,这组函数统称为网络编程套接字(socket)。

传输层主要涉及两种协议,TCP/UDP,所以根据两种不同的协议提供了两组socket函数。

2.TCP/UDP

TCP特性:有连接,可靠传输,面向字节流,全双工

TCP(Transmission Control Protocol)传输控制协议

有连接:

TCP正式通信之前,就需要让通信双方保存对方的关键信息,通信结束后再删除对方的关键信息。

丢包:

网络传输过程中是可能产生丢包的。每个路由器/交换机在单位时间内能够传输的数据量有限,如果传输超出上限,就会出现丢包。

可靠传输:

就是对抗丢包,尽可能把数据传输给对方。如果数据不能送达接收方,也能知道接收方是否收到了数据报。

面向字节流:

和读写文件类似,使用InputStream和OutputStream

全双工:

一个通信,可以进行双向传输。

半双工就是一个通信只能单向传输。

UDP特性:无连接,不可靠传输,面向数据报,全双工

无连接;

不考虑丢包;

面向数据报:每次读写以一个UDP数据报为单位进行。

3.socket

socket有多种含义:

1.网络编程套接字socket:网络编程中用到的传输层api的统称

2.socket对象:表示网卡硬件设备的抽象,socket对象相当于一种特殊的文件

4.使用UDP协议进行网络编程

1.server

1.DatagramSocket类

DatagramSocket类的方法·:

2.DatagramPacket(数据报包)

DatagramPacket是UDP Socket发送和接收的数据报,DatagramPacket是UDP数据传输中的基本单位。

3.SocketException异常

SocketException继承IOException:

4.客户端与服务器

5.端口号

指定port端口号,作为构造方法的参数。

端口号:区分主机上的不同的应用程序

6.启动服务器

7.读取请求并解析

异常

8.根据请求计算响应

9.将响应返回给客户端

udp无连接,socket对象不获取发送端的IP和端口号。

所以要手动设置服务器计算后的响应发给谁

2.client

1.传参,服务端IP、端口号

2.开启客户端

3.用户输入

4.构造UDP数据报,进行发送

5.从服务器读取相应

6.显示响应

相关推荐
一碗白开水一6 分钟前
Day 5 · 弹性 | 微观
java·前端·数据库
迪飞特科技6 分钟前
大模型接入业务系统:API、本地部署、RAG、智能体四种路线怎么选
java·数据库·人工智能·知识图谱·deepseek·本地化大模型
斌糖雪梨18 分钟前
registerListeners(); 方法详解
网络·网络协议·rpc
vipxieliang25 分钟前
ValidX 验证器缓存机制:如何提升验证性能
java·spring boot
Jtti34 分钟前
香港服务器CPU不高但用户请求排队的原因有哪些?
运维·服务器·网络
2501_9151063235 分钟前
KXApp 的 VS Code 真机调试:按下 Cmd+R 之后发生了什么
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
未秃头的程序猿36 分钟前
Spring Cloud Gateway 做统一加解密,我在请求体上栽了三天
java·后端·架构
Rain的Java大神之路37 分钟前
别再上来就堆 Redis!点赞系统从打挂数据库到 18w 写峰值,我把这套方案讲透了
java·后端·面试
SimonKing40 分钟前
开源文档解析天花板 MinerU 4.0:PDF / 图片 / Office 等任意文档都支持
java·后端·程序员
咖啡八杯1 小时前
Spring MessageSource 国际化消息解析流程
java·后端·spring·架构·框架·若依