For some reason this function completely locks up... if someoen could help I would really appriciate it:
void NETCLASS::_SendInfo(char *data,unsigned int size,char *destip,unsigned int port)
{
int retval, loopflag=0;
int maxloop=-1;
unsigned int addr;
int socket_type = DEFAULT_PROTO;
struct sockaddr_in server;
struct hostent *hp;
WSADATA wsaData;
SOCKET conn_socket;
if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR)
{
WSACleanup();
return;
}
/* use gethostbyname() or gethostbyaddr()? I think I'll write some code to check....*/
if (isalpha(destip[0]))
{ /* server address is a name */
hp = gethostbyname(destip);
}
else
{ /* Convert destip address to a usable one */
addr = inet_addr(destip);
hp = gethostbyaddr((char *)&addr,4,AF_INET);
}
if (hp == NULL ) {
WSACleanup();
return;
}
// Copy resolved information into sockaddr_in structure
memset(&server,0,sizeof(server));
memcpy(&(server.sin_addr),hp->h_addr,hp->h_length);
server.sin_family = hp->h_addrtype;
server.sin_port = htons(port);
conn_socket = socket(AF_INET,socket_type,0); /* Open a socket */
if (conn_socket <0 )
{
WSACleanup();
return;
}
if (connect(conn_socket,(struct sockaddr*)&server,sizeof(server)) == SOCKET_ERROR)
{
WSACleanup();
return;
}
// string to send
retval = send(conn_socket,data,size,0);
if (retval == SOCKET_ERROR)
{
WSACleanup();
return;
}
/*retval = recv(conn_socket,data,size,0 );
if (retval == SOCKET_ERROR)
{
closesocket(conn_socket);
WSACleanup();
return;
}*/
// We are not likely to see this with UDP, since there is no
// 'connection' established.
//
if (retval == 0)
{
closesocket(conn_socket);
WSACleanup();
return;
}
closesocket(conn_socket);
WSACleanup();
return;
}
SPH