Socket 是对 TCP/IP 协议的抽象,是操作系统对外开放的接口。
过程
- 创建套接字
- 使用套接字收/发数据
- 关闭套接字
创建一个tcp socket(tcp套接字)
import socket
# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 这里使用套接字的功能
# 不用的时候,关闭套接字
s.close()
创建一个udp socket(udp套接字)
import socket
# 创建udp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 这里使用套接字的功能
# 不用的时候,关闭套接字
s.close()
介绍
Socket 套接字是在服务器上运行的程序之间或在不同服务器上运行的程序之间实现进程间通信的一种方式。服务器之间的通信依赖于网络套接字,网络套接字使用网际协议(IP)来封装和处理发送和接收数据。
客户端和服务器上的网络套接字都由其套接字地址引用。地址是传输协议(如传输控制协议(TCP)或用户数据报协议(UDP))、IP地址和端口号的唯一组合。
进程间通信有以下不同类型的套接字:
- 流套接字,使用 TCP 作为其底层传输协议。
- 数据报套接字,使用 UDP 作为其底层传输协议。
- Unix 域套接字,使用本地文件而不是网络接口和IP包来发送和接收数据。
过程
- 创建套接字
- 使用套接字收/发数据
- 关闭套接字
创建一个tcp socket(tcp套接字)的框架
import socket
# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 这里使用套接字的功能
# 不用的时候,关闭套接字
s.close()
创建一个udp socket(udp套接字)的框架
import socket
# 创建udp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 这里使用套接字的功能
# 不用的时候,关闭套接字
s.close()
总结
网络套接字被绑定到要用于传输的一种网络协议的组合。此组合包括主机的网络地址和端口号。端口是节点上的编号资源,表示不同类型的软件结构。它们识别进程的服务类型,并充当外部可访问的位置组件,允许其他主机连接到它们。
我们可以使用网络套接字在两个节点之间建立永久连接,或者进行无连接和多播通信。
总而言之,使用套接字,我们可以在运行在不同机器上的进程之间建立连接。套接字 API 支持发送和接收操作,这些操作允许进程共享内核级通信缓冲区内外的消息缓冲区。套接字调用允许我们创建内核级套接字缓冲区。
此外,它还将任何需要与套接字关联的内核级处理与实际的消息移动关联起来。正如我们已经提到的,当我们使用套接字建立通信时,它可以在不同机器上的进程之间发生。
参考链接:
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 14 天,点击查看活动详情