int _tmain(int argc, NLchar **argv) #endif { NLaddress addr1; NLchar string[NL_MAX_STRING_LENGTH]; if(nlInit() == NL_FALSE) printErrorExit(); _tprintf(TEXT("nlGetString(NL_VERSION) = %s\n\n"), nlGetString(NL_VERSION)); if(nlSelectNetwork(NL_IP) == NL_FALSE) printErrorExit(); /* init the string improperly with NO null termination */ memset(string, 'a', sizeof(string)); _tprintf(TEXT("Test nlStringToAddr with unterminated string\n")); if(nlStringToAddr(string, &addr1) == NL_FALSE) printError(); _tprintf(TEXT("Test nlGetAddrFromName with unterminated string\n")); if(nlGetAddrFromName(string, &addr1) == NL_FALSE) printError(); _tprintf(TEXT("Test nlGetAddrFromNameAsync with unterminated string\n")); nlGetAddrFromNameAsync(string, &addr1); printError(); _tprintf(TEXT("Done\n")); nlShutdown(); return 0; }
// accepts "%i.%i.%i.%i[:%l]" as input bool StringToNetAddr(const std::string& string, NetworkAddr& addr, std::string* errorStr) { if(getNLaddr(addr) == NULL) return false; if(!isStringValidIP(string)) { SetNetAddrValid(addr, false); return false; } if(nlStringToAddr(string.c_str(), getNLaddr(addr)) == NL_FALSE) { errors << "StringToNetAddr: cannot use " << string << " as address: " << GetLastErrorStr() << endl; if(errorStr) *errorStr = GetLastErrorStr(); ResetSocketError(); return false; } return true; }
int main(int argc, char **argv) { NLboolean isserver = NL_FALSE; NLsocket serversock; NLsocket clientsock; NLaddress addr; NLbyte server[] = "127.0.0.1:25000"; NLenum type = NL_UNRELIABLE; /* Change this to NL_RELIABLE for reliable connection */ NLbyte string[NL_MAX_STRING_LENGTH]; if(!nlInit()) printErrorExit(); printf("nlGetString(NL_VERSION) = %s\n\n", nlGetString(NL_VERSION)); printf("nlGetString(NL_NETWORK_TYPES) = %s\n\n", nlGetString(NL_NETWORK_TYPES)); if(!nlSelectNetwork(NL_IP)) printErrorExit(); if(argc > 1) { if(!strcmp(argv[1], "-s")) /* server mode */ isserver = NL_TRUE; } if(isserver) { /* create a server socket */ serversock = nlOpen(25000, type); /* just a random port number ;) */ if(serversock == NL_INVALID) printErrorExit(); if(!nlListen(serversock)) /* let's listen on this socket */ { nlClose(serversock); printErrorExit(); } nlGetLocalAddr(serversock, &addr); printf("Server address is %s\n", nlAddrToString(&addr, string)); mainServerLoop(serversock); } else { /* create a client socket */ clientsock = nlOpen(0, type); /* let the system assign the port number */ nlGetLocalAddr(clientsock, &addr); printf("our address is %s\n", nlAddrToString(&addr, string)); if(clientsock == NL_INVALID) printErrorExit(); /* create the NLaddress */ nlStringToAddr(server, &addr); printf("Address is %s\n", nlAddrToString(&addr, string)); /* now connect */ if(!nlConnect(clientsock, &addr)) { nlClose(clientsock); printErrorExit(); } mainClientLoop(clientsock); } nlShutdown(); return 0; }