xxdd 发表于 2021-12-2 10:40:38

客户端用socket向服务器发日志,偶尔乱码会是什么原因?

功能很简单,python做的,客户端就是把时间,IP地址及一些状态信息通过socket发给服务器,全部都是字母数字,没有中文
但是服务器偶尔会收到乱码,如下图,红框里就是两条乱码的记录,绿框是客户端的IP地址,好像是客户端的IP地址一切换,就容易有乱码,但IP切换也不一乱码
感觉很奇怪,有没有坛友遇到类似问题,帮忙看看怎么解决

我是一个大白菜 发表于 2021-12-2 10:52:15

本地保存一份,对着时间戳,看看是不是生成字符串的时候就错了。传输一般不会有问题的

Himem 发表于 2021-12-2 10:58:52

仅仅是端口被人扫了吧

xxdd 发表于 2021-12-2 11:04:49

Himem 发表于 2021-12-2 10:58
仅仅是端口被人扫了吧

端口被人扫走?这种怎么解决?

xxdd 发表于 2021-12-2 11:06:47

我是一个大白菜 发表于 2021-12-2 10:52
本地保存一份,对着时间戳,看看是不是生成字符串的时候就错了。传输一般不会有问题的 ...

这个实验还没做,感觉客户端不可能有乱码呀,就字符串相加,几行代码而已

初音之恋 发表于 2021-12-2 11:11:17

不一定是客户端的问题,建个局域网的服务端自己测试,打打日志就行了,也有可能指针出错

chunjiu 发表于 2021-12-2 11:39:53

是 ip 切换时导致个别数据包串包了吧?

在发送端加一个检查,若发送某包后 ip 出现变更,那数据就再发送一次。

我是一个大白菜 发表于 2021-12-2 11:57:01

xxdd 发表于 2021-12-2 11:06
这个实验还没做,感觉客户端不可能有乱码呀,就字符串相加,几行代码而已 ...

我遇到的字符串打印错误,一般都是自己这里生成的时候就错了,就是uint8_t的值不是ascii里的,显示就有问题了。

shamiao 发表于 2021-12-2 12:18:30

不推荐使用裸的socket在不规定协议的情况下收发数据。
单纯的tcp流,中转环节众多,收发到什么东西都不奇怪,这玩意儿弄不好就是被中途污染了。
还是推荐拟定一个协议,先确保能够约定一个包的格式和校验方法,保证能够从tcp流中无二义性地分割取出一个包,并保证基本的完整性。

friendljy 发表于 2021-12-2 12:27:46

应该是被其他的软件连的,并不是你的设备上报的。我试过随便开一个空的端口,放两天,就会收到各种乱七八糟的数据。
可以加一个简单的过滤和校验,增加帧头之类的,不符合的过滤掉就行了。

xxdd 发表于 2021-12-2 13:39:56

friendljy 发表于 2021-12-2 12:27
应该是被其他的软件连的,并不是你的设备上报的。我试过随便开一个空的端口,放两天,就会收到各种乱七八糟 ...

正解,问了用户那边,晚上3点多,早都关机下班了,服务器收到的数据就是其他设备上的
从来没搞过网络通信,没想到还有这种现象,学习了

vtte 发表于 2021-12-2 18:55:54

这是有人在扫RDP端口

happyhls 发表于 2021-12-2 23:27:53

有人在扫描RDP,简单方法是换个启动端口,或者白名单访问IP。可以看看这个 https://github.com/olipo186/Git-Auto-Deploy/issues/221

最好还是加个token验证吧,你现在看着就是裸奔。

jasonzhu8888 发表于 2021-12-3 08:13:53

(转)网络编程十宗罪

1、TCP没考虑粘包分包
2、UDP没考虑丢包
3、长连接没考虑应用层心跳
4、大数据没考虑分片和流量控制
5、客户端没考虑断线重连
6、外网没考虑加密通信
7、没有处理SIGPIPE
8、大小端字节序问题
9、多线程发送乱序问题
10、串包问题

dou_yuyu 发表于 2021-12-3 09:20:41

别人扫描你的数据。不用管吧。反正格式不对,你也不认,关闭这个链接就是。
页: [1]
查看完整版本: 客户端用socket向服务器发日志,偶尔乱码会是什么原因?