采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
吴哥,我遇到一个问题,就是服务端的上传文件主函数里,接收不到客户端的报文,if(TcpServer.Read(strrecvbuffer,starg.timetvl+10)==false) 老是失败,我看了您的CTcpServer类关于Read函数,说错误的原因可能是等待超时或者socket连接不可用,但是我不太清楚到底是哪个原因,或者说是别的错误导致的,调试半天一直没搞清楚,求教,感谢! 注:我这个是华为云服务器,服务端代码和客户端代码都放在/project/tools1/c/目录下面。
你可以先写一个简单的服务端和客户端程序,不要一上来就搞太复杂的,调试起来很麻烦的。
先让程序简单化。
你用我的代码试试。
我用了吴哥您的/project/tools/c/fileserver1.cpp,里面代码什么都没有动,但是运行就显示logfile.open failed.日志打开失败了,刚开始就失败了/(ㄒoㄒ)/~~。我开始以为我的5005端口没开或者防火墙服务没开,但是检查都是开的。接着用gdb调试,用p打印了log file,显示如下: {m_tracefp = 0x0, m_filename = '\000' <repeats 300 times>, m_openmode = "\000\000\000\000\000\000\000\000\000\000", m_bEnBuffer = false, m_bBackup = true, m_MaxLogSize = 100} 后面看了吴哥您的_public.cpp源代码,不太懂这个日志文件指针,日志文件名,还有日志文件的打开方式,都是空的。还望求解,辛苦吴哥了! 注:我用了另一个云服务器和虚拟机,测试了2遍,都用了吴哥您的/project/tools/c/fileserver1.cpp,运行都提示logfile.open failed.另外运行tcpputfiles1.cpp,结果也是提示logfile.open failed.
后面我用第一个云服务器测试,又好了,用了吴哥您的代码,后面我又测试了一遍自己的代码,跟吴哥您的代码对比了一下,实在是没找到不同点,也有可能我眼神不好了,我查看服务端的日志,可能是因为等待20秒的延迟导致超时所以失败,但是我查不到为什么会莫名其妙延迟20秒。后来我把服务端和客户端的代码只要有关于20字眼的代码全都改了,可运行结果还是那样,算了,老老实实拷贝吴哥代码继续学下去吧😭
登录后可查看更多问答,登录/注册
通过技术的实际应用,掌握等同2年经验的技术能力
601 3
941 20
971 11
972 10
716 7