600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 学习笔记(05):Python网络编程并发编程-基于socket实现简单套接字通信

学习笔记(05):Python网络编程并发编程-基于socket实现简单套接字通信

时间:2019-12-05 01:58:42

相关推荐

学习笔记(05):Python网络编程并发编程-基于socket实现简单套接字通信

立即学习:/course/play/24458/296234?utm_source=blogtoedu

1.服务器端

#以打电话通讯为例子进行说明#导入相应的模块import socket#1、设置套接字的类型以及协议(买手机),其实就是设置一个套接字,phone即为一个套接字#设置为网络类型的套接字:socket.AF_INET#设置为TCP协议:socket.SOCK_STREAMphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2、绑定端口以及制定IP地址(绑定手机卡)#bind(('ip地址',端口))传入的是一个元组#端口是0-65550,其中0-1024是给操作系统使用的phone.bind(('127.0.0.1',8080))#3、监听端口listen()#表示可挂起的请求的最大数量为5个,如接着一个电话时,另一个电话又打进了,这时候需要将这个电话挂起,等当前的电话结束后再处理后面打进来的这个电话phone.listen(5)#4、阻塞,等待客户端的连接accept()res = phone.accept()'''(<socket.socket fd=348, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 65470)>, ('127.0.0.1', 65470))res返回了一个元组,含有两个元素,第一个元素是套接字对象:<socket.socket fd=348, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 65470)>,第二个是本地地址与端口组成的元素('127.0.0.1', 65470)'''#5、获得收发消息的套接字conn,client_addr = res#6、收发消息#1)接收客户端的请求信息recv()data = conn.recv(1024)#1024表示接收的字节最大量是1024bytesprint('这是客户端的请求数据',data)#2)处理接收的请求后,发送数据send()#将客户端发送来的小写字母经过大写处理后发送返回给客户端conn.send(data.upper())#7、关闭接收消息的套接字conn.close()#8、关闭phone套接字phone.close()

2.客户端

#导入模块import socket#1、设置phone套接字phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2、连接服务器(打电话),本地地址:127.0.0.1phone.connect(('127.0.0.1',8080))#3、向服务器发送请求send(),发送的数据不能直接发送字符串,因为要传送到物理层底层,因此需要转换成二进制的bytes类型进行发送,只需:发送的数据.encode('utf-8')即可phone.send('hello'.encode('utf-8'))#4、接收服务器返回来的数据recv()res = phone.recv(1024)#接收小于1024bytes的数据print('服务器返回来的数据:',res)#5、关闭套接字phonephone.close()

注:服务器端含有两个套接字,一个是phone用于绑定、监听端口,等待客户端请求,conn用于接收发送数据;而客户端则是只有一个套接字,phone,用于与服务器端进行通讯

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。