Armin Steinhoff
05/17/2010 6:13 AM
post54828
|
Hi,
I'm testing an example application of the library "udt". The code of this example works with Linux and Windows.
Under QNX6.4.1 I got the following error message:
> bind: Connection setup failure: unable to create/configure UDP socket:
> No buffer space available.
Is UDP not supported ??
The code sequence is:
int main(int argc, char* argv[])
{
if ((1 != argc) && ((2 != argc) || (0 == atoi(argv[1]))))
{
cout << "usage: appserver [server_port]" << endl;
return 0;
}
// use this function to initialize the UDT library
UDT::startup();
addrinfo hints;
addrinfo* res;
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_flags = AI_PASSIVE;
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
//hints.ai_socktype = SOCK_DGRAM;
string service("9000");
if (2 == argc)
service = argv[1];
if (0 != getaddrinfo(NULL, service.c_str(), &hints, &res))
{
cout << "illegal port number or port is busy.\n" << endl;
return 0;
}
UDTSOCKET serv = UDT::socket(res->ai_family, res->ai_socktype, res->ai_protocol);
// UDT Options
//UDT::setsockopt(serv, 0, UDT_CC, new CCCFactory<CUDPBlast>, sizeof(CCCFactory<CUDPBlast>));
//UDT::setsockopt(serv, 0, UDT_MSS, new int(9000), sizeof(int));
//UDT::setsockopt(serv, 0, UDT_RCVBUF, new int(10000000), sizeof(int));
//UDT::setsockopt(serv, 0, UDP_RCVBUF, new int(10000000), sizeof(int));
if (UDT::ERROR == UDT::bind(serv, res->ai_addr, res->ai_addrlen))
{
cout << "bind: " << UDT::getlasterror().getErrorMessage() << endl;
return 0;
}
freeaddrinfo(res);
..... a.s.o
--Armin
|
|
|