第四课 网络编程入门


第四课 网络编程入门
《Hacking with Python》系列课程第四课,我们今天将用Python socket模块边写一个简单的TCP Server,对这一块熟悉的同学可以跳过这节课。
Python socket模块介绍
socket模块是Python提供的底层网络接口,
文档链接:https://docs.python.org/zh-cn/3/library/socket.html
现在我们开始用socket模块创建一个TCP Server:




创建一个简单的TCP Server的流程
- 1.创建一个socket
- 2.绑定主机和端口
- 3.开始监听端口
- 4.接收请求并处理
- 5.关闭连接
import socket
host = "localhost"
port = 9337
sock_ = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock_.bind((host,port))
sock_.listen(1)
print("\nServer started...\n")
conn,addr = sock_.accept()
print("Connection established with: ",str(addr))
message = "\nThank you for connecting "+str(addr)
conn.send(message.encode("ascii"))
conn.close()
上面的代码,接收一个连接,并把欢迎语返回给连接的客户端并关闭连接




创建一个TCP Client流程:
- 创建socket
- 连接服务器
- 处理业务
- 关闭连接
完整的TCP Server 和TCP Client
Server:
import socket
host = "localhost"
port = 9337
sock_ = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock_.bind((host,port))
sock_.listen(1)
print("\nServer started...\n")
conn,addr = sock_.accept()
print("Connection established with: ",str(addr))
message = "\nThank you for connecting "+str(addr)
conn.send(message.encode("ascii"))
conn.close()
Client:
import socket
sock_ = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock_.connect(("localhost",9337))
msg = sock_.recv(1024)
sock_.close()
print(msg.decode("ascii"))








今天关于socket的介绍是非常简单的,可以再深入学习一波,包括使用select,epoll等机制。 可以参考:Python3 cookbook 第十一章
https://python3-cookbook.readthedocs.io/zh_CN/latest/chapters/p11_network_and_web_program.html
此系列课程代码: https://github.com/flypythoncom/Hacking-with-Python
关注我们的微信公众号,获取最新的教程信息
原创文章,作者:flypython,如若转载,请注明出处:http://flypython.com/video/428.html
您必须登录才能发表评论。