现在有一个这样的程序: 在服务器端有各种产品,并且是有限数目的。在客户端提出申请某种产品,如果该产品存在则保持连接……
现在出现了一个非常奇怪的现象,在用一个客户机第一次连接服务器申请产品的时候,并且该产品还存在,但却出现了“已经没有产品”的提示,但再次连接后,就成功了。
不是每台机器第一次连接都有这样的问题!
程序采用 C/S 模式,SOCKET编程!
各位高手,请分析一下各种可能的情况,谢谢,重分相送!!
现在出现了一个非常奇怪的现象,在用一个客户机第一次连接服务器申请产品的时候,并且该产品还存在,但却出现了“已经没有产品”的提示,但再次连接后,就成功了。
不是每台机器第一次连接都有这样的问题!
程序采用 C/S 模式,SOCKET编程!
各位高手,请分析一下各种可能的情况,谢谢,重分相送!!
把处理申请产品的代码贴出来看看。
然后运行客户端程序,看看是否能得到正确结果;如果这样不行的话:在你的客户程序和服务器程序的每个关键步骤的地方将期望的返回值打印到文件
中,据此判断错误位置。
2)在服务器端加上日志纪录每次请求的细节,如果服务器纪录正常而返回不对,很有可能是如1)所说。
3)参考临界区的概念,设置临界区。
to wanglei888(阿笨猫): 我们已经这样调试过了,但就是因为错误不出现了,所以才发愁啊! 最近几次运行程序都是调试的,但都没有错误出现~~
1. 握手不正确这一条的问题是不存在的
2. 服务器这一条:我们是采用 TCP/IP ,只是一个应用程序,只是把程序作为 SERVER 与 CLIENT。所以,也没有记录日志
3. 临界区的问题也应该不是,因为,如果出现错误都是在程序第一次运行的时候,不存在其他进程来争夺临界区……
如果你判断是指针是否为NULL,那小心了,忘记初始化就会有问题2.用float运算却用它直接和0比较大小.
3.内存溢出,debug版本有4字节的保护,realse没有,很容易出现debug版本没事,但realse有事
从你的问题看,是不是初始化有问题?你的数据库采用什么?socket采用数据报还是TCP?
谢谢你的解答:
1. 程序中没有用到指针
2. 没用到 float 型
3. debug 和 release 都有问题~~
不过,还是谢谢你的回答
谢谢你的回答:
两次错误不是同一个产品