socket 中recv只能接收一次,下次就不能接收数据了,百思不得其解。
DWORD HandleWebRequest()
{
SOCKET sLiten,client;
struct sockaddr_in tcpaddr,from;
int fromlen,port=6000 ;
int pktlen;
u_long flags=1;
char Buffer[1024];
fromlen = sizeof(from);
char* HttpHead=" Pass customer's Request";
int HttpHeadlength=strlen(HttpHead);
char* HttpData="this is data,Begin transfer";
int HttpDatalength=strlen(HttpData);
sLiten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sLiten == INVALID_SOCKET)
goto ErrorExit;
///////////////////////////////
tcpaddr.sin_family=AF_INET;
tcpaddr.sin_addr.s_addr =INADDR_ANY;
tcpaddr.sin_port=htons(port);
if (bind(sLiten,(struct sockaddr*)&tcpaddr,sizeof(tcpaddr))==SOCKET_ERROR)
goto ErrorExit;
if (listen(sLiten,6) == SOCKET_ERROR)
goto ErrorExit;
while(1)
{
client = accept(sLiten, (struct sockaddr *)&from,&fromlen);
if(client==INVALID_SOCKET)
goto ErrorExit;
memset(Buffer,0,sizeof(Buffer));
if ((pktlen = recv(client,Buffer,1024,0))<=0) //第一次能成功,第二次就失败了。
{
int errorNo=WSAGetLastError(); // errorNo=10054.
closesocket(client);
break;
}
if(strlen(Buffer)>0)
{
if(strstr(Buffer,"Request data")!=NULL)
{
send(client,HttpHead,HttpHeadlength,0);
closesocket(client);
}
else if(strstr(Buffer,"Transfer Data")!=NULL)
{
send(client,HttpData,HttpDatalength,0);
closesocket(client);
}
}
}
closesocket(sLiten);
ErrorExit:
{
fprintf(stderr,"failed with error %d\n",WSAGetLastError());
return -1;
}
return 0L;
}
错在什么地方了?
相关推荐
Delphi 12.3控件之Winsoft JSEngine v4.9 for CB & D6-D12 Athens Full Source.7z
Delphi 12.3控件之Winsoft JSEngine v4.9 for CB & D6-D12 Athens Full Source.7z
Delphi 12 控件之Winsoft JSEngine v4.9 for CB & D6-D12 Athens Full Source.7z
Winsoft JSEngine v4.9 for CB & D6-D12 Athens Full Source.7z
WinSoft_JSEngine 3.6 完整源码免安装版
WinSoft_JSEngine 3.6 完整源码免安装版
Winsoft_JSEngine_3.0_D6-D10.2_Downloadly.ir.rar
Winsoft_JSEngine_3.0_D6-D10.2_Downloadly.ir.rar
Winsoft JSEngine v3.8 for Delphi & C++ Builder 6 - 10.4 Sydney FULL SOURCE.rar
JavaScript engine for Delphi and C++ Builder. uses Microsoft ChakraCore JavaScript engine supports Windows 32 and Windows 64 available for Delphi/C++ Builder 6 - 10.4 and Lazarus 2.0.8 source code included in registered version distributing library in applications is royalty free


网络编程
