手机电脑scoket通信 手机软件 APP inventor 服务端程序python

这篇具有很好参考价值的文章主要介绍了手机电脑scoket通信 手机软件 APP inventor 服务端程序python。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python scoket 通信

再帮助同学坐课题的时候接触到了scoket通信,了解到这应该是基层网络通信的原理,于是就导出搜索了一下相关的资料,简单来说scoket通信就是,可以让不同设备在同一个网络环境的条件下,可以实现相互通信既可以一对一也可以一对多,总之这对开发者来说,是跨设备交互的非常好的一种方式


本文主要实现两个功能,一是python与pyhon程序之间的通信,另一个是将客户端改为手机,电脑链接手机wifi,在同一网络环境下电脑与wifi的通信。python 与 python 的交互参考的是B站白夜黑羽的教程,特此鸣谢。

python 服务器端

在多人交互通信的过程中,服务器就是一个中转站的作用,他通过配置好需要使用的参数,等待客户端的链接
在python种使用的是scoket基础库来进行实现的,也就是不需要额外安装,只要你安装了python 你导入就可以了,接下来逐步讲解下面的部分。

  • 第一步导入scoket库中的文件
from socket import *
  • 第二步初始化用到参数变量
  1. IP地址
IP = '127.0.0.1'
  1. 服务器端口号
SERVER_PORT = 50000
  1. 缓冲区读取的字节数据的大小
BUFLEN = 512
  • 第三步
    实例化一个scoket对象
    参数AF_INET 表示该scoket网络层使用的IP协议
    参数SOCK_STREAM 表示该scoket传输使用tcp协议
listenSocket = socket(AF_INET,SOCK_STREAM)
  • 第四步scoket绑定指定IP的端口
listenSocket.bind((IP,PORT))
print(f'服务端启动成功,在{PORT}端口等待客户链接...')
  • 第六步等待客户端的链接
    dataScoket为链接之后生成对象之后会调用该对象的内部函数来执行读取和发送
    addr为链接成功之后的客户端的地址
dataScoket,addr = listenSocket.accept()
print('接受一个客户端链接',addr)
  • 第六步循环监听客户端的消息,并将接收到的消息返回
    进入循环使用dataScoket监听客户端的消息,最多接收的消息为BUFLEN个字节如果返回的是一个空值,则表明客户端已经进行离线操作,则服务器程序跳出循环,执行下线程序,如果接收到了信息,则在中断打印信息并将,信息发送给客户端。
    注意:由于scoket发送的是字节数据所以发送时要对数据进行编码所以接收时候要进行解码操作也就是要给接收到的数据加个.decode()后缀,发送消息时要进行编码默认的编码给发送的数据后加上.encode()后缀,进行编码操作
while True:
    recved = dataScoket.recv(BUFLEN)

    if not recved:
        break

    #读取的字节数据是bytes类型,需要解码为字符串
    info = recved.decode()
    print(f'收到对方信息:{info}')

    #发送的数据类型必须是bytes,所以需要编码
    dataScoket.send(f'服务端收到的信息:{info}'.encode())

  • 第七步执行退出通信循环之后的关闭监听对象和通信对象
dataScoket.close()
listenSocket.close()

服务器端完整代码如下

# ==TCP 服务端程序 server.py ===
# netstat -an|find/i "5000"
from socket import *

# 主机地址,表示绑定本机所有网络接口IP
IP = '127.0.0.1'
# 端口号
PORT = 50000
# 定义一次从scoket缓冲区最多读入512个字节数据
BUFLEN = 512


# 实例化一个scoket对象
# 参数AF_INET 表示该scoket网络层使用的IP协议
# 参数SOCK_STREAM 表示该scoket传输使用tcp协议
listenSocket = socket(AF_INET,SOCK_STREAM)

# socket绑定地址核端口
listenSocket.bind((IP,PORT))

# 使scoket处于监听状态,等待客户端的链接请求
# 参数5表示 最多接受多少个等待连接的客户端
listenSocket.listen(5)
print(f'服务端启动成功,在{PORT}端口等待客户链接...')

dataScoket,addr = listenSocket.accept()
print('接受一个客户端链接',addr)

while True:
    recved = dataScoket.recv(BUFLEN)

    if not recved:
        break

    #读取的字节数据是bytes类型,需要解码为字符串
    info = recved.decode()
    print(f'收到对方信息:{info}')

    #发送的数据类型必须是bytes,所以需要编码
    dataScoket.send(f'服务端收到的信息:{info}'.encode())


# 服务段也调用close() 关闭scoket
dataScoket.close()
listenSocket.close()

python 客户端

前面的步骤和服务器端基本一样,所以我这里进行一些合并

  • 第一步从scoket中导入全部内容,设置IP地址,服务端口号,以及待接收缓冲区字节长度
from socket import *

IP = '127.0.0.1'
SERVER_PORT = 50000
BUFFLEN = 512
  • 第二步实例化scoket对象指明协议
    参数AF_INET 表示该scoket网络层使用的IP协议
    参数SOCK_STREAM 表示该scoket传输使用tcp协议
dataScoket = socket(AF_INET,SOCK_STREAM)
  • 第三步与服务器端的scoket链接
dataScoket.connect((IP,SERVER_PORT))
  • 第四步进行通信循环
    通过input函数接收输入信息,如果接收到exit则退出通信循环,进行关闭scoket对象指令,使用dataScoket.send(toSend.encode())发送从键盘输入的消息,使用reved = dataScoket.recv(BUFFLEN)接收服务端发来的消息,如果服务器端返回了一个空消息则关闭了链接,则退出客户端的通信循环,执行关闭scoket对象指令操作。
while True:
    toSend = input('>>> ')
    if toSend =='exit':
        break

    # 发送消息,也要编码为bytes
    dataScoket.send(toSend.encode())

    # 等待接受服务段的消息
    reved = dataScoket.recv(BUFFLEN)

    # 如果返回空bytes,表示对方关闭了链接
    if not  reved:
        break

    print(reved.decode())
  • 关闭scoket对象
// A code block
var foo = 'bar';

客户端完整代码如下

from socket import *

IP = '127.0.0.1'
SERVER_PORT = 50000
BUFFLEN = 512

# 实例化一个scoket对象,指明协议
dataScoket = socket(AF_INET,SOCK_STREAM)


# 链接服务端scoket
dataScoket.connect((IP,SERVER_PORT))



while True:
    toSend = input('>>> ')
    if toSend =='exit':
        break

    # 发送消息,也要编码为bytes
    dataScoket.send(toSend.encode())

    # 等待接受服务段的消息
    reved = dataScoket.recv(BUFFLEN)

    # 如果返回空bytes,表示对方关闭了链接

    if not  reved:
        break

    print(reved.decode())


dataScoket.close()

代码运行效果

首先运行服务器端程序
显示服务器启动在50000号端口等待链接
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
之后运行客户端程序,服务端显示已经接收一个
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft在客户端输入一个消息并发送,接收到了服务器端返回的握手信息
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
服务器端显示接收信息
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft

手机软件与电脑通信

本文使用的手机软件是华南理工大学杨道全老师开发的APP inventor2 汉化增强版,目前已经收费但是仍有一定的使用期。
APP inventor2网站链接: https://www.wxbit.com/?loginref
我这里免费提供apk以及项目文件aia,以及我在网上找的scoket 客户端插件
如果你不想开会员想用免费的你就用APP INVNETOR1导入插件,再制作软件,文章最后我会给出APP INVENTOR2的代码块。
APP inventor1链接: http://app.gzjkw.net/login/

文件链接: https://pan.baidu.com/s/16HFo0gJxcLPzBUSDyEG7dA
提取码:5wow

手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft

aia文件导入方法请移步这篇文章前段
链接: https://blog.csdn.net/chrnhao/article/details/112758514

apk 文件直接用微信发给手机然后使用QQ浏览器安装即可
手机端实现的是客户端的程序,电脑需要运行服务器程序

将手机APP与电脑置于一个网段下

问题来了关键点怎么让手机和电脑能通过网络通信呢
其实有两种方法,第一种就是买一个服务器阿里云或者腾讯云,在云服务器上部署Scoket通信服务端然后,使用电脑和手机两个客户端程序通过服务器程序进行通信。这个过程就比较复杂,在这里我们弄一个简单的方法,就是电脑连手机热点。

首先开启手机热点,电脑连接手机热点。
之后我们要查看热点的IP地址这里也有两种方法

  • 找到电脑又下角的wifi图标
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    连接上热点之后点击热点下面的属性
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    滑倒底部查看IPv4的地址,OK这就是我们要填在手机和客户端里的地址了
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    或者运行如下代码,其打印的就会是目前连接的IP地址,这里不需要去知道为什么,其实没什么用。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# get local machine IP address
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
print(ip)
s.close()

手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft

然后我们把这个IP地址输入到我们最开始连接的服务端程序中,设置端口号为5000,运行成功之后等待连接这时候我们打开手机
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
注意必须用你开热点的手机打开这个APP
在上方填入IP地址和端口号点击连接
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
手机这里会提示链接成功
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft

然后电脑的服务器端会显示收到一个客户的信息显示已经接收到一个客户端连接,兵并且收到手机客户端给电脑服务器端发送的已连接的消息。
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
接下来就能通信了在手机上随便发点消息就好
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
以上就完成了夸设备连接的基础入门,可以做一些非常简单的开发。

接下来我把APP INVENTOR2汉化增强版的代码块贴上
为了降低学习难度,所以只用了非常少的代码块
手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft

结束以及后续已经完成的工作

虽然实现了scoket的跨设备通信

但是会存在非常明显的题
上面的基础实例只能实现一对一聊天,并不能实现多对多,而且客户端的代码是单线程的,发送消息和接收消息是线性关系,也就是发送了一条消息之后,接收一条消息,然后等待发送消息,在等待键盘输入要发的消息的过程中客户端是接收不到任何信息的,所以需要把客户端的程序改成两个线程一个负责接收一个负责发送,之后就是更改服务器端,让服务器端可以连接多个客户端,而且可以监听每个客户端耳的消息且广播给各个客户端,实现结果如下。

服务器可以监听多个客户端的连接,且可以接收多个客户端的发送的信息
我进行了如下的操作步骤文章来源地址https://www.toymoban.com/news/detail-695243.html

  1. 运行服务端程序
  2. 运行客户端1程序
  3. 运行客户端2程序
  4. 使用客户端1发送消息12345
  5. 使用客户端2发送消息1564565
    最终三个控制台输出结果如下
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    实现了广播通信了之后我申请了一个阿里云服务器,在上面搭建了scoket客户端
    实现了广播,服务器私发,设备与设备通过服务器私发功能,服务器端用pyside2制作了一个简易的的客户端软件
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    服务器对客户端私发
    手机电脑scoket通信 手机软件 APP inventor 服务端程序python,智能手机,python,microsoft
    如果这篇文章看的人多了,且有需要的话,我再把结束部分内容更新了,或者有这方面需要的话可以留言或者私信联系我。
    好完结撒花

到了这里,关于手机电脑scoket通信 手机软件 APP inventor 服务端程序python的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LocalSend 电脑和手机互传软件教程&解答手机端无法搜索到电脑的解决方案

    LocalSend是一款免费、开源、跨平台文件传输工具,可以方便地在不同设备之间共享文件。它支持多种设备和操作系统,包括Windows、Mac、Linux、Android和iOS等。使用Localsend非常简单,只需要按照以下步骤操作即可: ↑打开Localsend官网:在浏览器中输入Localsend.org,进入Localsend官网

    2024年02月09日
    浏览(162)
  • 闲置手机制作电脑副屏-状态监控(含软件)

    导读: 随着手机的更新迭代,相信小伙伴们手中有很多闲置的旧手机不知道要怎么处理,本篇教程教你利用旧手机制作电脑副屏进行状态监控,接下来一起来看看吧! 目前我自己在用的: 网上寻找到的模板: 上述三份模板样式我会打包放在本文最后需要自取哟! 闲置手机

    2024年02月10日
    浏览(44)
  • 有没有比较好的手机P图修图APP软件?推荐这8款软件

    日常生活中,我们经常遇到需要把照片/图片进行加工处理的情况,这时候就需要借助第三方工具来帮我们完成。下面“灵听录音转文字”给大家分享8款优秀的修图软件,希望对朋友们有帮助。   1、醒图 这是一款功能强大的全能修图app,你意想不到的精美效果,在这里都能

    2024年02月08日
    浏览(46)
  • Python实现手机App邮件发送动能,BeeWare 编写安卓软件 ~

    BeeWare 编写安卓软件,邮件发送动能 提醒:运行Python 3.7或更高版本 例如: [** ] 作者使用的Pycharm编译器 Pycharm 安装与使用教程以及BeeWare安装教程已过滤 ~ ~ ~ BeeWare 框架安装打包过程可以参考上一期的教程哦:https://blog.csdn.net/qq_45787306/article/details/125349461 一个代码库。多个应

    2024年02月10日
    浏览(44)
  • 如何记录每天的工作日程?电脑手机通用的日程管理软件

    在工作时间有限,但工作任务愈加繁多的现在职场中,要求每一个职场人士做好高效日程管理。通过高效管理日程,我们可以更好地组织和安排任务,合理分配时间和优先级,这有助于我们更专注地进行工作,减少时间的浪费,从而提高工作效率。 我们每天早晨花一些时间规

    2024年02月06日
    浏览(38)
  • 影视仓手机版1.0.6 ,EasyBox手机版本 v1.1.2, 影迷手机版本V1.6.0三款手机竖屏安卓app影视软件

    EasyBox v1.1.2 影视手机竖屏安卓版支持多仓 附带配置教程 EasyBox影视app是一个非常好用的追剧软件,同样是由TVbox来魔改而来,变成了竖屏的版本,让大家在手机上可以使用的更加方便。使用起来还是一样的体验,通过添加影视源就可以开始看海量的影视内容了,同时会实时根

    2024年02月14日
    浏览(31)
  • 企业网上订货系统的定义与组成|手机APP订单管理软件

    企业网上订货系统的定义与组成|手机APP订单管理软件 企业网上订货系统 主要用于公司和订货商建立订货关系,绑定订货商 属于是  经销商订货软件、供货商订货系统。         通过企业网上订货管理系统这把利器可以帮助企业打通线上, 线下业务,实现进销存管理,客户

    2024年02月09日
    浏览(46)
  • mac最新投屏软件-AirServer 7.27免费版手机投屏电脑软件安装教程

    mac最新投屏软件-AirServer 7.27免费版 是一款可以利用本地局域网络,将移动设备上的影像信号传输到电脑端进行实时展示的投屏软件,它具有良好的兼容性能,无论是在Windows系统还是Mac系统都可以完美的运行并呈现较高的清晰度和流畅度。 今天我们来讲讲怎么在Mac系统上正确

    2024年01月21日
    浏览(109)
  • 2023年依照市场行情定制开发一个手机App软件需要多少钱?

    app开发费用多少钱?这是我们得到的第一个问题,但是没有标准答案。 它取决于(实际上,取决于许多因素),您可以得到所要付出的代价。 在本指南中,我们将充实影响app开发成本的因素,包括按阶段和app类型划分的成本,开发人员的位置以及发布后的服务。另外,我们

    2024年02月09日
    浏览(57)
  • DroidCam---将手机转为电脑外接摄像头的软件(提供下载链接)

    在做计算机视觉的项目时,由于电脑自带的摄像头无法活动,会造成识别的相对困难。同时手上也无摄像头设备,那么人手一部的手机就可以尝试成为一个摄像头。 链接:https://pan.baidu.com/s/1_liaLq6zk5YTFq3j_j4ldw  提取码:w1z7 我使用的是window系统,手机是安卓机。电脑和手机都

    2024年02月10日
    浏览(105)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包