各位大神请指点一下!Winsock处理大量数据
我用Winsock做了一个服务器接收程序,运行在2003服务器上,接收大概30个GPRS客户端发送的心跳包(每隔30秒)和一些实用的数据(需要今后被查询的,所以写入数据库),心跳包是用来确认是否在线(直接修改SQL2000数据库的某个表确认它在线),实用数据是被写入SQL2000数据库之前,整个接收到的数据写入TXT文本,然后打开数据库---写数据---关闭数据库连接
问题来了:
1. TXT(xxxxx.log)文件打开能看到接收到的数据,但是,写入SQL2000数据库的只是部分的,不全,这个为什么?
2.是不是发送的数据来不及处理?
3.有什么更好的方法能解决这样的问题?
抓狂抓狂!望大神指点指点!
我的目的就是把接收到的数据写入数据库,不要丢失(100分奉上)
[解决办法]
没有具体的描述,只能猜测30个客户端的数据写数据库有并发冲突。
可以考虑将接收和数据处理分成两个 exe。
接收程序每收到客户端的一次数据(心跳包、业务数据)就写一个文件。
数据处理程序就是不停扫描目录,发现一个文件就处理一次,这样不会有并发。
又:作为仅有一个实例的数据处理程序,数据库连接保持常开即可。
不停开/关的方案适用于大量客户端连接数据库的场景。
[解决办法]
接收程序先在 A 目录临时写文件,写完后将文件 Move 到 B 目录。
数据处理开定时器,用 Dir 函数扫描 B 目录,发现一个就读文件、写数据库,处理完后就 Move 到 C 目录(如果不需备份就直接删除)。
[解决办法]