socket(1)
文章目录
socket:实现网络编程进行数据传输的技术手段,帮我们把TCP/IP协议都封装好了
socket基石代码(类似于框架)
一、服务端
#**********服务端********
import socket
#1. 创建一个socket对象
server_object = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#通过这个对象帮助我们收发消息
#2. 绑定IP地址和端口(通过这两个我们可以找到世界上一台确定的电脑的程序)arp协议
#注意:bind这个方法里边需要的参数是一个元组
sever_object.bind(("127.0.0.1"), 8000) #占用了8000这个端口
#3. 设置监听
#3.1 主动链接套接字变成被链接套接字
#3.2 5:是监听队列的大小
server_object.listen(5)
#4. 处理客户端链接请求
#conn对应的就是客户端的套接字
#addr端口地址
conn, addr = server_object.accept()
#5. 消息的收发
#收消息
#recv:接收客户端的消息
#参数:每次最多接受的消息的大小,bytes
#返回值:接收到的消息
data = conn.recv(1024)
#发消息
#参数:我们要发送的内容
conn.sent(data.upper())
#6. 四次挥手
conn.close()
#7. 退还端口
server_object.close()
二、客户端
# ************客户端***********
import socket
# 1.产生socket对象
client_object = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.链接服务端(用客户端去链接一个网址)
client_object.connect(("127.0.0.1"), 800)
# 3.发收消息
client_object.send("hello".encode("utf-8")) # encode()把字符串转换成二进制类型 发消息
data = client_object.recv(1024) # 收消息
print(data)
# 4.关闭链接,四次挥手
client_object.close()
三、通信循环与链接循环
发消息不止一次,用一个while Ture:这样就可以一直收发消息
# ***********客户端*************
import socket
# 1.产生socket对象
client_object = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.链接服务端(用客户端去链接一个网址)
client_object.connect(("127.0.0.1"), 800)
while Ture:
# 3.发收消息
msg = input('>>>').strip()
if not msg: #如果没有输入
continue
if msg == "q": #如果输入q,就断开链接
break
client_object.send(msg.encode("utf-8")) # encode()把字符串转换成二进制类型 发消息
data = client_object.recv(1024) # 收消息
print(data)
# 4.关闭链接,四次挥手
client_object.close()
四、如果服务端断开了链接
我们可以像下面这样做:(看第5步)
#**********服务端********
import socket
#1. 创建一个socket对象
server_object