---恢复内容开始---
socket功能简介:
socket为我们提供了底层通信协议栈封装,为代码编辑人员更方便使用底层网络进行通信提供了极大方便。下面是socket里面几个简单概念:
协议簇:
AF_INET:ipv4 AF_INET6: ipv6 AF_UNIX: 主机进程之间通信
socket_type:
SOCK_STREAM:tcp连接 SOCK_DGRAM:udp连接
最简单的socket通信代码,下面代码能够进行最简单的一次通信连接。 更为复杂的socket后面继续深入,先来了解一下一个完整的socket连接建立的过程实现。
server端:
1 # _*_ coding:utf-8 _*_ 2 import socket 3 server = socket.socket() #创建连接描述符,默认使用iv4/tcp 4 server.bind(("localhost",6969)) #指定监听地址和端口,开始等待客户端连接。 5 server.listen() #监听 6 print("开始等待接收文件") 7 conn,addr = server.accept() #创建和客户端交互数据的连接 8 print(conn,addr) 9 print("有文件要传输过来了") #当客户端连接过来开始传输文件会执行到此语句 10 date = conn.recv(1024) #1024为接收字节大小 11 print('date:',date) 12 conn.send(bytes("我有一个梦想".encode(encoding='utf-8')) ) #send默认只能发送byte类型,如果传输中文就不能之前中文前面 13 #添加b。而是需要显示将中文转换为bytes类型。python中只要进行encode操作会默认将结果转换为bytes类型。 14 15 16 server.close() #关闭连接
client端:
1 # _*_ coding:utf-8 _*_ 2 import socket 3 client = socket.socket() #创建连接描述符,指定socket连接的网络层和传输层协议,默认使用ipv4/tcp 4 client.connect(("localhost",6969)) #使用连接描述符连接server,server信息以元组形式传入,包含ip地址和端口号 5 client.send(b"Hello World") #发送hello world,send只能发送byte类型,不能发送字符串。 6 date = client.recv(1024) #1024为设置的接收字节大小 7 print("recv:",date) 8 print("recv_decode:",date.decode('utf-8')) #如需要显示bytes类型实际内容,需要对其进行decode操作就可以隐式将bytes 9 #类型转换为str类型
---恢复内容结束---