| Index: net/third_party/udt/app/recvfile.cpp
|
| ===================================================================
|
| --- net/third_party/udt/app/recvfile.cpp (revision 78992)
|
| +++ net/third_party/udt/app/recvfile.cpp (working copy)
|
| @@ -1,101 +0,0 @@
|
| -#ifndef WIN32
|
| - #include <arpa/inet.h>
|
| - #include <netdb.h>
|
| -#else
|
| - #include <winsock2.h>
|
| - #include <ws2tcpip.h>
|
| -#endif
|
| -#include <fstream>
|
| -#include <iostream>
|
| -#include <cstdlib>
|
| -#include <cstring>
|
| -#include <udt.h>
|
| -
|
| -using namespace std;
|
| -
|
| -int main(int argc, char* argv[])
|
| -{
|
| - if ((argc != 5) || (0 == atoi(argv[2])))
|
| - {
|
| - cout << "usage: recvfile server_ip server_port remote_filename local_filename" << endl;
|
| - return -1;
|
| - }
|
| -
|
| - // use this function to initialize the UDT library
|
| - UDT::startup();
|
| -
|
| - struct addrinfo hints, *peer;
|
| -
|
| - memset(&hints, 0, sizeof(struct addrinfo));
|
| - hints.ai_flags = AI_PASSIVE;
|
| - hints.ai_family = AF_INET;
|
| - hints.ai_socktype = SOCK_STREAM;
|
| -
|
| - UDTSOCKET fhandle = UDT::socket(hints.ai_family, hints.ai_socktype, hints.ai_protocol);
|
| -
|
| - if (0 != getaddrinfo(argv[1], argv[2], &hints, &peer))
|
| - {
|
| - cout << "incorrect server/peer address. " << argv[1] << ":" << argv[2] << endl;
|
| - return -1;
|
| - }
|
| -
|
| - // connect to the server, implict bind
|
| - if (UDT::ERROR == UDT::connect(fhandle, peer->ai_addr, peer->ai_addrlen))
|
| - {
|
| - cout << "connect: " << UDT::getlasterror().getErrorMessage() << endl;
|
| - return -1;
|
| - }
|
| -
|
| - freeaddrinfo(peer);
|
| -
|
| -
|
| - // send name information of the requested file
|
| - int len = strlen(argv[3]);
|
| -
|
| - if (UDT::ERROR == UDT::send(fhandle, (char*)&len, sizeof(int), 0))
|
| - {
|
| - cout << "send: " << UDT::getlasterror().getErrorMessage() << endl;
|
| - return -1;
|
| - }
|
| -
|
| - if (UDT::ERROR == UDT::send(fhandle, argv[3], len, 0))
|
| - {
|
| - cout << "send: " << UDT::getlasterror().getErrorMessage() << endl;
|
| - return -1;
|
| - }
|
| -
|
| - // get size information
|
| - int64_t size;
|
| -
|
| - if (UDT::ERROR == UDT::recv(fhandle, (char*)&size, sizeof(int64_t), 0))
|
| - {
|
| - cout << "send: " << UDT::getlasterror().getErrorMessage() << endl;
|
| - return -1;
|
| - }
|
| -
|
| - if (size < 0)
|
| - {
|
| - cout << "no such file " << argv[3] << " on the server\n";
|
| - return -1;
|
| - }
|
| -
|
| - // receive the file
|
| - fstream ofs(argv[4], ios::out | ios::binary | ios::trunc);
|
| - int64_t recvsize;
|
| - int64_t offset = 0;
|
| -
|
| - if (UDT::ERROR == (recvsize = UDT::recvfile(fhandle, ofs, offset, size)))
|
| - {
|
| - cout << "recvfile: " << UDT::getlasterror().getErrorMessage() << endl;
|
| - return -1;
|
| - }
|
| -
|
| - UDT::close(fhandle);
|
| -
|
| - ofs.close();
|
| -
|
| - // use this function to release the UDT library
|
| - UDT::cleanup();
|
| -
|
| - return 0;
|
| -}
|
|
|