socket
在学习Django之前先了解一下socket
用socket.socket()创建:
socket.socket(socket_family, socket_type, protocol=0)
创建一个socket对象。socket_family
是选择地址族(所以都是AF_开头),是不同的域(domain)。域决定者通信的特征,包括地址格式。参数socket_type
是确定套接字的类型,进一步确定通信特征。protocol
通常是0,表示为给定的域和套接字类型选择默认协议。当对同一域和套接字类型支持多个协议时,可以使用protocol选择一个特定的协议。在AF_INET通信域中,套接字类型SOCK_STREAM的默认协议时传输控制协议 TCP。在AF_INET通信域中,套接字类型SOCK_DGRAM的默认协议是UDP.为什么应该使用 TCP 协议?
- 可靠的:网络传输中丢失的数据包会被检测到并重新发送
- 有序传送:数据按发送者写入的顺序被读取

服务器端socket,bind后就一直处在listen的状态下,
客户端socket,connect后向服务器发出请求,(其中conn是tcp三次握手)
这时,服务器端还在listen,选择accept,
recv和send用于服务器和客户端的数据交换,
客户端收到后,选择close,
服务器收到客户端的close后,也选择close,通信完毕。(那么推测close就应该是四次挥手)
Socket对象方法
-
socket.accept()
接受一个连接。这个socket对象必须绑定了一个地址并正在监听着连接。返回的值是(conn, address)
,conn
是一个用来在接连上发送接收数据的新的socket对象,address
是绑定在另外一个的socket连接的地址。 -
socket.bind(address)
将socket绑定到一个address
。这个socket必须是未绑定地址的(address
的格式如上文提到的,e.g:IPv4的格式(host, port)
)。 -
socket.close()
关闭这个socket。接下来在这个socket对象的操作都将失败。另外一端将不在接收到数据(当队列中的数据都发送后)。当socket对象被垃圾回收机制回收时,将会自动关闭。 -
socket.connect(address)
用address
连接到一个远程的socket(address
的格式如上文提到的,e.g:IPv4的格式(host, port)
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?