在CB中用socket api来写网络通讯程序
int nSize=0;nSize=recv(m_AcceptSocket,(char FAR*)buf,4096,0);*fbx1sym+c~4g
if(nSize>0)
{v!IW}Hsa?
buf[nSize]='\0';
//Display
PSTNForm->Memo1->Lines->Add("Received Length:"+String(nSize));%@,_"b2SIZI!q;?"_%L;@
PSTNForm->Memo1->Lines->Add("Received:"+StrPas(buf));A4ND*X3~T+k
//Deliver
::Sleep(100);&~4M$xv8eV?1M&U
send(m_AcceptSocket,buf,nSize,0);
}
}
//******************************CLASS TListenThread*****************************************************9F(^$k3PCrc3bk)B
__fastcall TListenThread::TListenThread(PROTO m_ProtocolA,UINT m_PortA,bool CreateSuspended):TThread(FALSE)
{
m_Socket=INVALID_SOCKET;
m_Port=m_PortA;?-Z7|6G-N7X
m_Protocol=m_ProtocolA;puT0P4i)wK
szTmp[0]='\0';
::ZeroMemory(&wsaData,sizeof(WSAData));S&O#c:n&K~x
::ZeroMemory(&server,sizeof(struct sockaddr_in));{"l"A1@"l
FreeOnTerminate=TRUE;//Automatically delete while terminating. p*hu,NLj;^ c'W
}%X7UecF8RB*}
__fastcall TListenThread::~TListenThread()
{a$f bX0@*?
closesocket(m_Socket); i,bPx F-a8R0e
::WSACleanup();
m_Socket=INVALID_SOCKET;
m_Port=0;A]O{RK7L4|l
m_Protocol=TCP;~IS;c%| p ve
szTmp[0]='\0';1T*I9Ow ph
::ZeroMemory(&wsaData,sizeof(WSAData));ba0ei R?u0r
::ZeroMemory(&server,sizeof(struct sockaddr_in));/f0oa6S(jy'I ^EY;]
}
void __fastcall TListenThread::DoError()$W5\9j$w;b_W
{
if(m_Socket!=INVALID_SOCKET) closesocket(m_Socket);
WSACleanup();4mP*Fr(jWv^
return;
}
void __fastcall TListenThread::InitSocket()
{
WORD version=MAKEWORD(2,0);jX8E#Z_} b
if(::WSAStartup(version,&wsaData)){d X(KiHs R0Z
sprintf(szTmp,"Failed to intiailize socket,error no:%d",::WSAGetLastError());"YWG Hd(N
::MessageBox(0,szTmp,"Error",MB_OK+MB_ICONERROR);
DoError();rfAM i3t
return;
}
}+T0B7Ep X QV"~b2B
void __fastcall TListenThread::CreateListenSocket()-q0MIB9\w V}
{/AgXn3o$],L
switch(m_Protocol)]0T.u+G7zbB
{J0OYS5}1`G
case UDP:E'c*zZpB#H;Y6^}m
m_Socket=socket(AF_INET,SOCK_DGRAM,0);
break;
case TCP:O5}P(P _?8u!\o
m_Socket=socket(AF_INET,SOCK_STREAM,0);:Pti;G3[D,B ~B
break;
default:&@-io+^'AE6k'~9F
sprintf(szTmp,"Error protocol!");"s'U4~'vh&z$PZw8^
::MessageBox(0,szTmp,"Error",MB_OK+MB_ICONERROR);
DoError();1Qv$@k6V
break;cl0L\Q|
}vv^w2G0Y
if(m_Socket==INVALID_SOCKET){
sprintf(szTmp,"Failed to create socket!");
::MessageBox(0,szTmp,"Error",MB_OK+MB_ICONERROR);
DoError();a,HD/P(n0m]
return;mD sBr0hQkuB
}:k7F ?$L"JJ
}
void __fastcall TListenThread::SetListenSocket()jbD.O8U\ mO
{&^jv n/X(nj(U
server.sin_family=AF_INET;EW/SLj|9MT1F
server.sin_port=htons(m_Port);]x5L5Fp)Z~1q
server.sin_addr.S_un.S_addr=INADDR_ANY;
int NewOpenType=SO_SYNCHRONOUS_NONALERT;