socket_基础1

---恢复内容开始---

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类型

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/flags-blog/p/9461543.html