adding missing files
This commit is contained in:
parent
8008334150
commit
5072768243
2 changed files with 119 additions and 0 deletions
36
tests/udt_client.cpp
Normal file
36
tests/udt_client.cpp
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#include <iostream>
|
||||
#include <udt.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace UDT;
|
||||
|
||||
int main()
|
||||
{
|
||||
UDTSOCKET client = UDT::socket(AF_INET, SOCK_STREAM, 0);
|
||||
|
||||
sockaddr_in serv_addr;
|
||||
serv_addr.sin_family = AF_INET;
|
||||
serv_addr.sin_port = htons(9000);
|
||||
inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);
|
||||
|
||||
memset(&(serv_addr.sin_zero), '\0', 8);
|
||||
|
||||
// connect to the server, implict bind
|
||||
if (UDT::ERROR == UDT::connect(client, (sockaddr*)&serv_addr, sizeof(serv_addr)))
|
||||
{
|
||||
cout << "connect: " << UDT::getlasterror().getErrorMessage();
|
||||
return 0;
|
||||
}
|
||||
|
||||
char* hello = "hello world! 3\n";
|
||||
if (UDT::ERROR == UDT::send(client, hello, strlen(hello) + 1, 0))
|
||||
{
|
||||
cout << "send: " << UDT::getlasterror().getErrorMessage();
|
||||
return 0;
|
||||
}
|
||||
|
||||
UDT::close(client);
|
||||
|
||||
return 1;
|
||||
}
|
||||
83
tests/udt_server.cpp
Normal file
83
tests/udt_server.cpp
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
#include <arpa/inet.h>
|
||||
#include <udt.h>
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
UDTSOCKET serv = UDT::socket(AF_INET, SOCK_STREAM, 0);
|
||||
bool block = false;
|
||||
|
||||
sockaddr_in my_addr;
|
||||
my_addr.sin_family = AF_INET;
|
||||
my_addr.sin_port = htons(9000);
|
||||
my_addr.sin_addr.s_addr = INADDR_ANY;
|
||||
memset(&(my_addr.sin_zero), '\0', 8);
|
||||
|
||||
if (UDT::ERROR == UDT::bind(serv, (sockaddr*)&my_addr, sizeof(my_addr)))
|
||||
{
|
||||
cout << "bind: " << UDT::getlasterror().getErrorMessage();
|
||||
return 0;
|
||||
}
|
||||
UDT::listen(serv, 10);
|
||||
|
||||
int namelen;
|
||||
sockaddr_in their_addr;
|
||||
|
||||
|
||||
UDT::setsockopt(serv, 0, UDT_SNDSYN, &block, sizeof(bool));
|
||||
UDT::setsockopt(serv, 0, UDT_RCVSYN, &block, sizeof(bool));
|
||||
UDTSOCKET recver = UDT::accept(serv, (sockaddr*)&their_addr, &namelen);
|
||||
if( recver == UDT::INVALID_SOCK )
|
||||
{
|
||||
if( UDT::getlasterror_code() == CUDTException::EASYNCRCV )
|
||||
{
|
||||
std::cout << "nothing yet... better luck next time\n";
|
||||
}
|
||||
}
|
||||
auto pollid = UDT::epoll_create();
|
||||
UDT::epoll_add_usock(pollid, serv, nullptr );// const int* events = NULL);
|
||||
std::set<UDTSOCKET> readready;
|
||||
std::set<UDTSOCKET> writeready;
|
||||
std::cout << "waiting for 5 seconds\n";
|
||||
UDT::epoll_wait( pollid, &readready, &writeready, 10000 );
|
||||
|
||||
|
||||
recver = UDT::accept(serv, (sockaddr*)&their_addr, &namelen);
|
||||
if( recver == UDT::INVALID_SOCK )
|
||||
{
|
||||
if( UDT::getlasterror_code() == CUDTException::EASYNCRCV )
|
||||
{
|
||||
std::cout << "nothing yet... better luck next time\n";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
UDT::setsockopt(recver, 0, UDT_SNDSYN, &block, sizeof(bool));
|
||||
UDT::setsockopt(recver, 0, UDT_RCVSYN, &block, sizeof(bool));
|
||||
UDT::epoll_remove_usock(pollid, serv );// const int* events = NULL);
|
||||
int events = UDT_EPOLL_IN;
|
||||
|
||||
UDT::epoll_add_usock(pollid, recver, &events );// const int* events = NULL);
|
||||
|
||||
readready.clear();
|
||||
UDT::epoll_wait( pollid, &readready, &writeready, 5000 );
|
||||
|
||||
char ip[16];
|
||||
cout << "new connection: " << inet_ntoa(their_addr.sin_addr) << ":" << ntohs(their_addr.sin_port) << endl;
|
||||
|
||||
char data[100];
|
||||
|
||||
while (UDT::ERROR == UDT::recv(recver, data, 100, 0))
|
||||
{
|
||||
cout << "recv:" << UDT::getlasterror().getErrorMessage() << endl;
|
||||
UDT::epoll_wait( pollid, &readready, &writeready, 5000 );
|
||||
}
|
||||
|
||||
cout << data << endl;
|
||||
|
||||
UDT::close(recver);
|
||||
UDT::close(serv);
|
||||
|
||||
return 1;
|
||||
}
|
||||
Loading…
Reference in a new issue