Python高级编程4-socket

本文详细介绍了Python中socket编程的应用,包括服务端和客户端的实现,通信循环与链接循环,处理服务端断开连接的情况,以及解决TCP粘包问题的方法。通过struct模块进行数据转换,并探讨了HTTP协议在web服务中的作用。同时,给出了一个类似百度网盘文件收发的示例,展示了如何接收和保存文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值