社区
网络及通讯开发
帖子详情
socket设置断点的问题,老妖进来看看,帮帮忙了,我实在搞不清楚问题在哪儿了
Moon_Love
2007-06-19 10:57:20
我写了一个远程控制程序,服务端是用vc,客户端是用的bcb socket控件,但是现在有一个问题。
客户端接收服务端数据时,只有在和socket相关的函数上(任何函数,recv,send,或getpeername,accept等等)断点单步执行,得到的服务端数据一切正常,但是取消断点得到数据就出问题,经常会是乱码,这是为什么呢?
...全文
295
13
打赏
收藏
socket设置断点的问题,老妖进来看看,帮帮忙了,我实在搞不清楚问题在哪儿了
我写了一个远程控制程序,服务端是用vc,客户端是用的bcb socket控件,但是现在有一个问题。 客户端接收服务端数据时,只有在和socket相关的函数上(任何函数,recv,send,或getpeername,accept等等)断点单步执行,得到的服务端数据一切正常,但是取消断点得到数据就出问题,经常会是乱码,这是为什么呢?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shadowstar
2007-06-21
打赏
举报
回复
我不是说了循环调用recv或者用select,设断点的话已经有等等的时间,当然就会收到了。
Moon_Love
2007-06-21
打赏
举报
回复
to shadowstar:
最要命的地方就在这里,recv数据只能设置断点来看,可是只要设置断点他的数据就是正常的,当不设断点查看的时候就出错了..........
LuoGD
2007-06-21
打赏
举报
回复
要循环的接收,查看收到的数据是否完全,
recv只是接收已经到达的数据,比如Server发送1024字节,
可能开头有100BYTE到达了Client,那么Client第一次调用recv则只返回100个字节的信息,
你必须继续调用recv,直到1024字节全部收到,
Moon_Love
2007-06-21
打赏
举报
回复
to shadowstar:
那解决的方法是什么呢?
Moon_Love
2007-06-20
打赏
举报
回复
谢谢两位的思路,给我提供了一个考虑的方向,希望大家多多提供其他的想法啦!!!帮帮忙
shadowstar
2007-06-20
打赏
举报
回复
既然用非阻塞方式,直接recv就不一定会收到数据,可以检查recv返回的值确定接收到数据没有。
如果楼主不喜欢用控件的话,简单的方法是用一个循环调用recv直到接收到数据或超时。
正规一点可以用 select 函数检查是否有数据。
具体还是参考 socket 帮助吧。
Moon_Love
2007-06-20
打赏
举报
回复
今天测试了很多次,也改了很多次还是这个问题。
recv(Socket->SocketHandle,(BYTE*)&sysinfo,sizeof(SYSTEMINFO),NULL);
只要在这句上加上断点就没问题,否则sysinfo要么是乱码,要么是空的,郁闷啊!!!!!!!!各位救命啦!!
i_love_pc
2007-06-19
打赏
举报
回复
是不是阻塞/非阻塞的原因?
僵哥
2007-06-19
打赏
举报
回复
Recive的时候判断实际接收到的长度,如果非预期长度,则对接收到的数据进行缓存,后续接收到的数据合并之后再处理。另外还要考虑一个粘包的问题(具体什么是粘包,楼主不妨也自己找资料学习一下^_^)。
i_love_pc
2007-06-19
打赏
举报
回复
也许是时间的关系,比如服务器发送之后,客户端要延迟一段时间才能接收到,而如果立即接收的话会出现截断的情况。
Moon_Love
2007-06-19
打赏
举报
回复
我都是非阻塞的方式啊,应该不是这里的问题。我只是奇怪,设置断点单步执行过去就正常,难道设置断点和普通的运行有什么不同的地方吗?
探索Python:pip list与python -m pip list的实战对比及拓展
总的来说,提供了一种更为明确和安全的方式来确保使用正确的pip版本,特别是在多个 Python 版本共存的系统中。而pip list在日常使用中更为简便,特别是在单一 Python 环境中。选择哪种方式取决于你的具体需求和系统配置。在 Python 和其工具链中,存在几个类似于pip list和这样的命令对,它们在表面上作用相似,但在调用方式和某些行为上存在细微的差异。
python pip常用指令(install,list,freeze)
首先,我们进入cmd命令控制界面,输入pip,查看下pip的命令集合 接下来我们来整理一下pip命令: commands 原指令解释 翻译 install Install package 安装python包 download download package 下载python包 uninstall Uninstall packag...
微知-python包管理工具pip如何查看安装了某个库?(pip3 show xxx;pip3 list; pip3 show xxx -v)
pip是python的一个包管理工具。平时只是install,但是很少查看安装了哪些?以及某个包详细信息。本文主要介绍list列出所有的包,以及show查看某个详细信息。顺带介绍install。
怎么看自己的Python中有哪些库 使用pip list命令 pip freeze help() site-packages目录 pkg_resources模块——《跟老吕学Python编程》附录资料
运行上述代码后,会显示numpy库的帮助信息,包括模块、函数、类等的说明。可以获得当前环境中所有已安装的分发包(distributions)列表,然后可以遍历这个列表来查看库的名称和版本号。以上五种方法都可以用来查看Python环境中已安装的库,每种方法都有其适用的场景和优缺点。命令可以查看当前Python环境中已安装的库列表。这个命令会列出所有已安装的库以及它们的版本号。输出的结果可以直接用于在其他环境中安装相同版本的库,因为它输出的格式是。这个方法虽然没有版本号信息,但可以快速查看已安装的库。
pip3 list和pip3 freeze:Python包管理命令详解
pip3 list和pip3 freeze:Python包管理命令详解
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章