树莓派 Python 网络编程 (Socket入门)
什么是 Socket?
Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
Python 提供了两个级别访问的网络服务。:
低级别的网络服务支持基本的Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。高级别的网络服务模块SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。
服务端
1、socket():创建一个socket 例子:s =socket.socket()
2、bind():绑定IP地址和端口,他接受是一个元组数据 例子 s.bind(("127.0.0.1",8088))
3、listen():定义最多能挂起的数目。例子: s.listen(2) 允许两个客户端等待发送信息 (挂起)
4、accept():创建主机和客户的连接 conn.addr=s.accept()
以下是服务器端代码,server.py
# - *- coding: utf- 8 - *-import socket# 导入 socket 模块s = socket.socket() # 创建 socket 对象host = socket.gethostname() # 获取本地主机名port = 12345# 设置端口s.bind((host, port)) # 绑定端口s.listen(5) # 等待客户端连接while True:c,addr = s.accept()# 建立客户端连接。print('连接地址:', addr)c.send(" This is the server. I will send you a message now. ")c.close()# 关闭连接
注意:以上代码在python2中运行是没有问题的,如果在python3中会遇到:TypeError: a bytes-like object is required, not 'str'
参考:/questions/33054527/typeerror-a-bytes-like-object-is-required-not-str-when-writing-to-a-file-in
/questions/33003498/typeerror-a-bytes-like-object-is-required-not-str
方法1:改一行代码c.send(bytes('Thisistheserver.Iwillsendyouamessagenow.','utf-8'))
客户端
1、socket() :创建socket s=socket.socket()
2、connect():用自己的对象去连接服务端 s.connect(("127.0.0.1",8088))
以下是客户端代码,client.py
# - *- coding: utf- 8 - *-import socket# 导入 socket 模块s = socket.socket() # 创建 socket 对象host = socket.gethostname() # 获取本地主机名port = 12345# 设置端口号s.connect((host, port))print(s.recv(1024) )s.close()
具体操作步骤:
现在我们打开两个终端(或者两个python IDLE),第一个终端执行 server.py 文件:
第二个终端执行 client.py 文件:
这时我们再打开第一个终端(服务器端),就会看到有以下信息输出:连接地址: ('192.168.0.118', 62461)
这时我们打开客户端,就会看到有以下信息输出: b'hello'
好了,这次分享到这里了,欢迎指正,感谢观看。
如果觉得《树莓派 Python 网络编程 (Socket入门)》对你有帮助,请点赞、收藏,并留下你的观点哦!