Socket API的问题,求助
BOOL SSTInitSock()
{
//Define Variable
WORD wVersionrequested;
WSADATA wsaData;
int nErr;
wVersionrequested = MAKEWORD( 1, 2 );
//Start Sock
nErr = WSAStartup( wVersionrequested, &wsaData );
if ( nErr == -1)
{
return FALSE;
}
return TRUE;
}
BOOL SSTConnectSock()
{
//Define Variable
int msgsock;
char server_address[15] = {"90.0.12.13"};//{"127.0.0.1"};
//Ini Sock
ClientSock = socket( AF_INET, SOCK_STREAM, 0 );
if (ClientSock==INVALID_SOCKET)
{
SlonMessageBox( "scoker err", 24, NULL, 0, 0 );
return FALSE;
}
// Address
addrConn.sin_family = PF_INET;
addrConn.sin_port = htons(9898);
addrConn.sin_addr.s_addr = inet_addr( server_address );
// Connect
addrConn.sin_addr.s_addr = inet_addr( server_address );
msgsock = connect( ClientSock, (struct sockaddr*)&addrConn, sizeof(sockaddr_in) );
if( msgsock )
return FALSE;
return TRUE;
}
void SockSend( const char* buf, INT32 nLen )
{
INT16 nSentLen = 0 ,nSent = 0;
nLen ++ ;
while(1)
{
nSent = send( ClientSock, buf+nSentLen, nLen-nSentLen, MSG_OOB );
if( nSent )
nSentLen += nSent;
if( nSentLen == nLen )
break;
}
return;
}
INT16 SockRecv( char* buf, INT32 nLen )
{
INT16 nRevLen = 0 ,nReved = 0;
while(1)
{
nReved = recv( ClientSock, buf+nRevLen, nLen-nRevLen, MSG_PEEK );
if( nReved )
nRevLen += nReved;
if( nRevLen == nLen )
break;
}
return nRevLen;
}
用以上代码进行发送接收,发送没有问题,接收的时候要么收不到数据,要么可以重复收,不只是什么问题,请帮忙。