⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cxx

📁 pwlib源码库
💻 CXX
字号:
/* * main.cxx * * PWLib application source file for stunclient * * Main program entry point. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.6  2004/10/26 06:00:45  csoutheren * Added -t and -o options * * Revision 1.5  2004/02/24 11:15:48  rjongbloed * Added function to get external router address, also did a bunch of documentation. * * Revision 1.4  2003/02/05 06:26:49  robertj * More work in making the STUN usable for Symmetric NAT systems. * * Revision 1.3  2003/02/04 07:02:55  robertj * Removed ports in test, added delete of created udp socket. * * Revision 1.2  2003/02/04 05:23:59  craigs * Added new functions * * Revision 1.1  2003/02/04 03:31:04  robertj * Added STUN * */#include <ptlib.h>#include "main.h"#include "version.h"#include <ptclib/pstun.h>PCREATE_PROCESS(StunClient);StunClient::StunClient()  : PProcess("Equivalence", "stunclient", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER){}void StunClient::Main(){  PArgList & args = GetArguments();  args.Parse("t-trace."       "-no-trace."             "o-output:"      "-no-output.");  PTrace::Initialise(args.GetOptionCount('t'),                   args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL,                   PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine);  WORD portbase, portmax;  switch (args.GetCount()) {    case 0 :      cout << "usage: stunclient stunserver [ portbase [ portmax ]]\n";      return;    case 1 :      portbase = 0;      portmax = 0;      break;    case 2 :      portbase = (WORD)args[1].AsUnsigned();      portmax = (WORD)(portbase+9);      break;    default :      portbase = (WORD)args[1].AsUnsigned();      portmax = (WORD)args[2].AsUnsigned();  }  PSTUNClient stun(args[0], portbase, portmax, portbase, portmax);  cout << "NAT type: " << stun.GetNatTypeName() << endl;  PIPSocket::Address router;  if (!stun.GetExternalAddress(router)) {    cout << "Could not get router address!" << endl;    return;  }  cout << "Router address: " << router << endl;  PUDPSocket * udp;  if (!stun.CreateSocket(udp)) {    cout << "Cannot create a socket!" << endl;    return;  }  PIPSocket::Address addr;  WORD port;  udp->GetLocalAddress(addr, port);  cout << "Socket local address reported as " << addr << ":" << port << endl;  delete udp;  PUDPSocket * udp1, * udp2;  if (!stun.CreateSocketPair(udp1, udp2)) {    cout << "Cannot create socket pair" << endl;    return;  }  udp1->GetLocalAddress(addr, port);  cout << "Socket 1 local address reported as " << addr << ":" << port << endl;  udp2->GetLocalAddress(addr, port);  cout << "Socket 2 local address reported as " << addr << ":" << port << endl;  delete udp1;  delete udp2;}// End of File ///////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -