网络通信_套接字

本文概述了套接字在网络通信中的作用,作为编程接口,它支持不同计算机间的数据交换。介绍了地址族、套接字类型、协议、地址以及相关方法,如创建、连接、发送和接收数据,将其视为传输协议实现的一种抽象类。
摘要由CSDN通过智能技术生成

这篇文章内容来源自GPT,再加上我自己的一些理解。太专业的我也看不懂。

先看下GPT给套接字的解释

套接字(Socket)是在网络通信中使用的一种编程接口或抽象概念,它提供了一种通信机制,使得不同计算机之间可以进行数据交换和通信。套接字是网络通信的基础,它允许应用程序在网络上进行数据传输,实现客户端与服务器之间的通信。

套接字通常用于实现网络中的进程间通信(IPC,Inter-Process Communication),它可以在同一台计算机的进程间通信,也可以在不同计算机之间的进程间通信。

套接字编程接口提供了一组函数或方法,允许开发者创建、连接、发送和接收数据等操作。常见的套接字编程接口有 Berkeley 套接字(BSD Socket)接口和 Windows 套接字接口等。

 这上面叽里呱啦一堆,倒是有几个关键字(接口、方法)。那这个可不可以当成一个类?先不管是不是真的是类,先这么理解一下。去查一下它的组成部分。

  1. 地址族(Address Family):地址族指定了套接字使用的地址格式和协议族,常见的地址族包括 IPv4、IPv6 等。不同的地址族使用不同的地址格式和协议族,例如 IPv4 使用 32 位的地址格式,而 IPv6 使用 128 位的地址格式。

  2. 套接字类型(Socket Type):套接字类型定义了套接字的通信方式和行为特性,常见的套接字类型包括流套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。流套接字提供面向连接的、可靠的、基于字节流的通信,通常使用 TCP 协议;而数据报套接字提供无连接的、不可靠的、基于数据报的通信,通常使用 UDP 协议。

  3. 协议(Protocol):协议指定了套接字使用的传输协议,常见的传输协议包括 TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等。不同的传输协议具有不同的特性和适用场景,开发者根据实际需求选择合适的协议。

  4. 地址(Address):地址用于标识套接字的网络位置,包括 IP 地址和端口号。IP 地址用于标识网络中的主机,端口号用于标识主机上的应用程序。在 IPv4 中,IP 地址通常由 4 个 8 位的数字组成,例如 192.168.1.1;在 IPv6 中,IP 地址通常由 8 组 16 位的数字组成,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。

  5. 套接字选项(Socket Options):套接字选项用于设置和获取套接字的属性和参数,包括超时时间、缓冲区大小、重用地址等。开发者可以通过套接字选项来配置套接字的行为特性,以满足实际需求。

 我们把这些理解为它的属性。我这么理解只是为了对它有个具象化的概念。我再来查查它有什么方法

  1. 构造方法

    • Socket(String host, int port): 创建一个套接字并连接到指定的主机和端口。
    • ServerSocket(int port): 创建一个服务器套接字并绑定到指定的端口。
  2. 连接和关闭

    • connect(SocketAddress endpoint): 将套接字连接到指定的远程地址。
    • close(): 关闭套接字连接。
  3. 发送和接收数据

    • InputStream getInputStream(): 获取套接字的输入流,用于接收数据。
    • OutputStream getOutputStream(): 获取套接字的输出流,用于发送数据。
    • void send(byte[] data): 发送字节数组数据。
    • int receive(byte[] buffer): 接收数据并存储到指定的字节数组缓冲区中。
  4. 其他方法

    • getInetAddress(): 获取远程主机的地址。
    • getPort(): 获取远程主机的端口号。
    • setSoTimeout(int timeout): 设置套接字的超时时间

 OK,有方法,那我就认为这是个类。最后聊聊它的作用。我就不贴上GPT那一大堆专业解释了。我个人认为套接字就是传输协议(TCP/UDP等)的具体实现。只是我被这个名字迷惑了,我一直是认为它是一个唯一的编码。

我说的可能有误解,因为主观想法很多,大家当作一个初步的理解,谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值