socket 套接字通信
socket 套接字通信
1、什么是socket
socket是一个模块,又称套接字,用来封装 互联网协议(应用层以下的层)
2、socket的作用
socket可以实现互联网协议应用层以下的层的工作
3、怎么使用socket
import socket
写socket套接字:
Client
Server
server.py文件内容:
""" 先启动套接字服务端 注意: 客户端一次发送,服务端先一次接收,再发送 """ import socket # 就好像:买手机 server = socket.socket() # 绑定手机卡 # ip地址相当于手机号码 server.bind(("127.0.0.1", 9527)) # 半连接池:限制用户的访问数量 server.listen(5) # 最多5个人坐椅子 实际上==6 # 循环实现可接收多了用户访问 while True: # 等待电话接入 ---> 客户端 # conn:指的是服务端通往客户端的管道 conn, addr = server.accept() # 循环实现循环通信 while True: try: # 监听代码块是否有异常 # 接听对方讲话的内容 # data 客户端发送过来的消息 data = conn.recv(1024) # 可接收一次1024 bytes的数据 if data.decode("utf-8") == "q": break if len(data) == 0: break print(data) # 服务端向客户端发送消息 res = input("请回复客户端消息>>> ") conn.send(res.encode("utf-8")) # 捕获异常信息 except Exception as e: # 打印异常 print(e) break # 关闭通信,挂电话 conn.close()
client.py文件内容:
""" 启动服务端后再启动客户端 """ import socket # 买手机 client = socket.socket() # 拨号 # 客户端的ip,port必须与服务器一致 client.connect(("127.0.0.1", 9527)) # 循环实现可接收多次服务端返回信息以及访问服务端信息 while True: send_data = input("请发送服务端消息>>> ") # 讲话给对方听 # 必须发送bytes # client.send(b"hello") # 或者编码 client.send(send_data.encode("utf-8")) # 客户端收到服务端返回信息 data = client.recv(1024) if data.decode("utf-8") == "q": break if len(data) == 0: break print(data) # 关闭通信,挂电话 client.close()
执行结果自行测试。