VC++写进销存通讯问题,高手请进

deeporoceking 2010-02-24 03:46:31
比较急,希望高手可以给我解答!
情况大概是这样的,我在写进销存的服务器端程序的时候,建的是一个单文档的程序,然后服务器端通讯的代码如下,写完之后不管我放到那个类里去(我还自己建了一个类,用函数去调用),程序是可以编译通过的,运行也没问题,但是如果那段代码一添加进去,运行就死了,没有响应,希望高手可以给我解答,谢谢,写明为什么,要怎么搞定,谢谢了
代码:

#include "Winsock2.h"

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {

WSACleanup( );
return;
}
SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);

sockaddr_in addrSrv;
addrSrv.sin_family = AF_INET;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_port = htons(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(addrSrv));

listen(sockSrv,5);

sockaddr_in AddrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn = accept( sockSrv,(SOCKADDR*)&AddrClient,&len );
char recvBuf[100];
char sendBuf[5];
recv(sockConn,recvBuf,strlen(recvBuf)+1,0); //接受客户账号密码
cout<<recvBuf<<endl;

CString TempBuf;
//bool YN = check_login(recvBuf); //验证客户账号密码,如果成功则发送1回去客户端,如果失败则发送0
/*if(YN == 1)
{
TempBuf = "11111";
strcpy(sendBuf,TempBuf);
send(sockConn,sendBuf,6,0);
}
if(YN == 0)
{*/
TempBuf = "00000";
strcpy(sendBuf,TempBuf);
send(sockConn,sendBuf,6,0);
//}
closesocket(sockConn);
}
...全文
59 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
deeporoceking 2010-02-24
  • 打赏
  • 举报
回复
引用 7 楼 fly0622 的回复:
你那个while 语句 怎么没有退出的语句!! 一直在死循环  不会卡死吗?????


可能是这个问题,原本上面的代码的单独用来连接的,所以会一直开着,现在加上数据库了,可能是这个原因死了


刚试了,果然是这样,谢谢了
WizardK 2010-02-24
  • 打赏
  • 举报
回复
这种问题调试还看不出来?死在哪里总能定位吧?
o_yale_o 2010-02-24
  • 打赏
  • 举报
回复
“进销存”用VC写整死人啊
奔跑前行 2010-02-24
  • 打赏
  • 举报
回复
你那个while 语句 怎么没有退出的语句!! 一直在死循环 不会卡死吗?????
deeporoceking 2010-02-24
  • 打赏
  • 举报
回复
引用 3 楼 zhou1xp 的回复:
#include "Winsock2.h"

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

你是调用的1.1,但用的是2.2的头文件吧


貌似它会向下兼容
deeporoceking 2010-02-24
  • 打赏
  • 举报
回复
引用 4 楼 wuhuwy 的回复:
没添加前服务器能收到客户端发的信息吗,处理结果是否正确,如果这两个都没问题,那估计就是客户端接受返回信息出了问题


这代码放在控制台的应用程序就没问题,但不知道为什么放到单文档应用程序了就会死~~
wuhuwy 2010-02-24
  • 打赏
  • 举报
回复
没添加前服务器能收到客户端发的信息吗,处理结果是否正确,如果这两个都没问题,那估计就是客户端接受返回信息出了问题
zhou1xp 2010-02-24
  • 打赏
  • 举报
回复
#include "Winsock2.h"

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

你是调用的1.1,但用的是2.2的头文件吧
deeporoceking 2010-02-24
  • 打赏
  • 举报
回复
不是,这个代码是没关系的,我的意思是上面整段代码都上去就死了
WizardK 2010-02-24
  • 打赏
  • 举报
回复
注释掉的代码加上就死?死在check_login了?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧