python基础—socket套接字(1)
socket套接字:把传输层(端口),网络层(ip),数据链路层(Mac),物理层 整体做了封装,直接在应用层(应用程序)调用相关接口即可
一个简单的服务端,客户端
'服务端' import socket, time # 1实例化一个链接对象 socket_obj = socket.socket() print('socket_obj', socket_obj) # socket_obj <socket.socket fd=212, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0> # 2绑定ip+端口 socket_obj.bind(('127.0.0.1', 8000)) # 3监听,队列最多5个 socket_obj.listen(5) # 4等待链接,返回两个值 a, b = socket_obj.accept() print(a) # a为对象 print(b) # b为客户端ip+端口 data = a.recv(1024) # 接收数据,设置最大1024byte data_decode = data.decode('utf8') # 数据解码 print(data_decode) # 修改数据后传给客户端 data_upper = data_decode.upper() time.sleep(10) a.send(data_upper.encode('utf8')) a.close() # 关闭链接 socket_obj.close()
'客户端' import socket import time # 1实例化链接对象 socket_obj = socket.socket() # 2建立链接 socket_obj.connect(('127.0.0.1', 8000)) time.sleep(2) # 3发数据,byte格式 socket_obj.send('abcd'.encode('utf8')) # 4接收数据 data = socket_obj.recv(1024) print(data.decode('utf8')) # 5关闭客户端 socket_obj.close()
服务端accept对应客户端的connect.多了一个bind绑定ip和端口。.accept会生成一个新的链接对象。后面的传输都由这个对象来完成