关于CSOCKET的问题!各位大虾~帮帮我!
大虾们帮我看看我的程序有什么问题??
我觉的不太对!为什么我每接受一次信息后都必须CLOSE了再 LISTEN才能收到下一次信息??
还有CSOCKET到底是阻塞的还是非阻塞的??
int inet(int S_Port)
{
//入口参数S_Port 端口号(Setting_Port)
//*************************
//****socket过程的开始*****
//*************************
if(!AfxSocketInit()){
AfxMessageBox("WindowsSocket initial failed");
return BAD;
}
int count=0;
char Command_Msg[255];
char Msg[255];
CSocket Server,Listening;
if(!Listening.Create(S_Port)){
AfxMessageBox("socket create failed");
return BAD;
}
if(!Listening.Listen()){
AfxMessageBox("socket listen failed");
return BAD;
}
if(!Listening.Accept(Server)){
AfxMessageBox("socket accept failed!");
return BAD;
}
//命令格式
//@S0.....9 系统命令
//@C0.....9 交谈命令
//@N0.....9 网络命令
while(1){
count=0;
//Command_Msg[0]=0;
count=Server.Receive(Command_Msg,255,0);
if(count<0){
AfxMessageBox("Socket receive failed");
Server.Close();
continue;
}
else{//else begin
Command_Msg[count]=0;
AfxMessageBox(Command_Msg);
//命令选择
switch(GetCommand(Command_Msg,Msg)){
case CMD_ERROR:
AfxMessageBox("CMD_ERROR");
break;
case SHUT_DOWN:
AfxMessageBox("shut down");
ExitWindowsEx(EWX_SHUTDOWN,0);
break;
case REBOOT:
ExitWindowsEx(EWX_REBOOT,0);
default:
break;
}
}//end else if
Server.Close();//为什么我每接受一次信息后都必须CLOSE了
//再 LISTEN才能收到下一次信息??
Listening.Accept(Server);
}//while end
return GOOD;
}