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)

参考:https://www.jianshu.com/p/9207700ec26d

http://python.jobbole.com/89290/

posted @   木木吖  阅读(144)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示