网络通信
网络通信需要啥? OSI参考模型是啥? socket:
- 物理层
- 数据链路层、MAC地址
- 网络层、 IP地址,好了两台机器能找到了,能连上
- 传输层、发数据,传数据,当然ICMP在网络层,它只是发送个ping包,三次握手
- 会话层
- 表示层
- 应用层
我们在开发过程中通常不需要关心怎么握手、怎么链接,这些功能已做好封装。socket
socket 是什么? 实例:
1 import socket
3 client = socket.socket() # 声明socket类型,同时生成连接对象
5 client.connect(("localhost", 6969)) # 连接
7 client.send(b"Hello Word!") # 发数据
9 data = client.recv(1024) # 收数据
10 print("recv:", data)
12 client.close()
15 import socket
16 server = socket.socket()
18 server.bind(('localhost', 6969)) # 绑定要监听的端口
20 server.listen() # 监听
22 print("我开始等电话了...")
24 # server.accept() # 等电话打进来
25 conn, addr = server.accept() # 这返回两个值conn是进来的连接,addr对方的地址
26 # conn 就是客户端连过来而在服务器端为其生成的一个连接实例
28 print(conn,addr)
30 print("电话来了")
31 data = server.recv(1024) # 接收数据
33 print("SERVER:recv, ", data.upper())
35 server.send(b"goodbye")
37 server.close()