栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python用TCP协议实现客户端发送数据并将接收端收到的的数据导入excel表格中

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python用TCP协议实现客户端发送数据并将接收端收到的的数据导入excel表格中

作为小白,这篇博客是记录尝试了3天,尝试了3,4种办法,写了六七个版本才完成的一段程序(虽然在很多大佬面前只是小菜一碟)。然后想要告诉自己不要被一次又一次的失败打到,通往成功的道路不止一条,这种方法不行就换一种,一种一种地试,在n次失败之后最终会找到成功的路的,最重要的是千万不要在中途放弃了!!!

首先先了解一下什么是TCP协议

TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。在一个TCP连接中,仅有两方进行彼此通信。

(涉及的不多,大概了解一下即可)

好了,言归正传,我们来看一下怎么实现吧。

首先,我们得先上PyPI · The Python Package Index下载第三方开源模块xlwt和xlrd。

下载完成后 打开windows命令符窗口,输入 pip install xlwt回车。

安装xlwt,xlrd也是同样操作。

前期都准备好了,可以开始写代码了。

#引入socket、xlwt、xlrd
import socket,time
import xlwt
import xlrd

#本地信息
HOST,PORT ='',4000

#创建socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#绑定
s.bind((HOST,PORT))

#设置服务对象数
s.listen(5)

#等待用户连接
print('Waiting for connection...')

# 使用socket创建的套接字默认的属性是主动的,
# 使用listen将其变为被动的,这样就可以接收别人的链接了
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

#绑定
listen_socket.bind((HOST, 5000))
listen_socket.listen(5)

#创建一个workbook 设置编码
#增加一页excel表格并命名

#自定义表头,括号对应(行,列,值)[注意行和列都是从0开始的]
#将表格保存在设置好的路径中

#监听端口,若有客户端连接上了就打印 Accept new connection from client
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('test1')

worksheet.write(0,0,'d1')
worksheet.write(0,1,'d2')
worksheet.write(0,2,'d3')
worksheet.write(0,3,'d4')
workbook.save(r"C:Program Filesexcel_test.xls")
i=0

n=1

sock,addr = s.accept()
print('Accept new connection from client')


#接收并打印data(在服务端上显示)
while True:
    data = sock.recv(1024).decode()
   print(data)
    
#打开已创建好的excel
    excel_path='C:Program Filesexcel_test.xls'
    rbook = xlrd.open_workbook(excel_path,formatting_info=True)
    
#写入数据(括号里对应的是行数,列数,要写入的东西)
#这里让列数自增,实现自动输入

#每写一次保存一次
#加个判断,一行写满四个数据就换行
    worksheet.write(n,i,data)
    i+=1
    workbook.save(r"C:Program Filesexcel_test.xls")
    if(i%4==0):
        n+=1
        i=0

#关闭socket,结束进程
sock.close()print('Connection from %s:%client closed.'% addr)

以上就是详细代码以及注释,那么我们搭个简单的客户端来实践一下吧~

以下就是客户端的代码

 import socket
# 1.创建socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2. 链接服务器
server_addr = ("192.168.50.32", 4000)
tcp_socket.connect(server_addr)

# 3. 发送数据
while True:
    send_data = input("请输入要发送的数据:")
    tcp_socket.send(send_data.encode("gbk"))
    if send_data=='quit':
        break
    
# 4. 关闭套接字
tcp_socket.close()

 运行一下看一下效果

 

 

 

搞定。

注意事项:这个表格是一次性的,再用这段程序的时候, 上一次的数据会被覆盖掉。每次生成表格都给重命名即可解决。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355043.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号