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()
执行结果自行测试。
以上是 socket套接字通信 的全部内容, 来源链接: utcz.com/z/530271.html