02. Sockets 简介
本章是 socket 编程的介绍。 假定读者具备基本的计算机网络知识, 但没有网络编程经验。 本书并不包含如何使用 Socket API 的所有细节, 建议你在学习本书的同时阅读手册和其他网络编程指南。https://beej.us/ 是一个 Socket API 的良好资源。
Redis 就是服务器/客户端系统的一个例子。 多个客户端连接到一个服务器, 服务器接收来自 TCP 连接的请求并发送响应。 在开始套接字编程之前, 我们需要学习几个 Linux 系统调用。
socket() 系统函数会返回一个 fd。 如果你不熟悉 Unix 系统, 下面是对 “fd” 的粗略解释:fd 是一个整数, 指的是 Linux 内核中的某个内容, 如 TCP 连接、 磁盘文件、 监听端口或其他资源等。
bind() 和 listen() 系统函数: bind() 将地址与 socket fd 相关联, 而 listen() 则使我们能够接受对该地址的连接。
accept() 接收一个监听的 fd, 当客户端与监听地址建立连接时, accept() 返回一个代表连接 socket 的 fd。 下面是解释服务器典型工作流程的伪代码:
fd = socket()
bind(fd, address)
listen(fd)
while True:
conn_fd = accept(fd)
do_something_with(conn_fd)
close(conn_fd)
read() 系统函数从 TCP 连接中接收数据。 write() 系统函数发送数据。 close() 系统函数会销毁 fd 调用的资源, 并回收 fd 编号。
我们已经介绍了服务器端网络编程所需的系统函数。 在客户端, connect() 系统函数接收套接字 fd 和地址, 并与该地址建立 TCP 连接。 以下是客户端的伪代码:
fd = socket()
connect(fd, address)
do_something_with(fd)
close(fd)
下一章将帮助你开始使用真实代码。
结语
接着上一篇文章继续
如有错误, 敬请指出, 感谢指正! — 2024-10-09 23:58:10
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了