亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? udp.cxx

?? sip 開源代碼 源于novell sip 開源代碼 源于novell
?? CXX
字號:
#include <cassert>#include <cstdio>#include <cstring>#include <errno.h>#include <iostream>#include <cstdlib>#include <time.h>#ifdef WIN32#include <winsock2.h>#include <stdlib.h>#include <io.h>#else#include <arpa/inet.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <netinet/in.h>#include <sys/socket.h>#include <sys/types.h>#include <netdb.h>#include <string.h>#include <unistd.h>#endif#include <string.h>#include "udp.h"using namespace std;SocketopenPort( unsigned short port, unsigned int interfaceIp, bool verbose ){   Socket fd;       fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);   if ( fd == INVALID_SOCKET )   {      int err = getErrno();      cerr << "Could not create a UDP socket:" << err << endl;      return INVALID_SOCKET;   }       struct sockaddr_in addr;   memset((char*) &(addr),0, sizeof((addr)));   addr.sin_family = AF_INET;   addr.sin_addr.s_addr = htonl(INADDR_ANY);   addr.sin_port = htons(port);       if ( (interfaceIp != 0) &&         ( interfaceIp != 0x100007f ) )   {      addr.sin_addr.s_addr = htonl(interfaceIp);      if (verbose )      {         clog << "Binding to interface "               << hex << "0x" << htonl(interfaceIp) << dec << endl;      }   }	   if ( bind( fd,(struct sockaddr*)&addr, sizeof(addr)) != 0 )   {      int e = getErrno();              switch (e)      {         case 0:         {            cerr << "Could not bind socket" << endl;            return INVALID_SOCKET;         }         case EADDRINUSE:         {            cerr << "Port " << port << " for receiving UDP is in use" << endl;            return INVALID_SOCKET;         }         break;         case EADDRNOTAVAIL:         {            if ( verbose )             {               cerr << "Cannot assign requested address" << endl;            }            return INVALID_SOCKET;         }         break;         default:         {            cerr << "Could not bind UDP receive port"                 << "Error=" << e << " " << strerror(e) << endl;            return INVALID_SOCKET;         }         break;      }   }   if ( verbose )   {      clog << "Opened port " << port << " with fd " << fd << endl;   }      assert( fd != INVALID_SOCKET  );	   return fd;}bool getMessage( Socket fd, char* buf, int* len,            unsigned int* srcIp, unsigned short* srcPort,            bool verbose){   assert( fd != INVALID_SOCKET );	   int originalSize = *len;   assert( originalSize > 0 );      struct sockaddr_in from;   int fromLen = sizeof(from);	   *len = recvfrom(fd,                   buf,                   originalSize,                   0,                   (struct sockaddr *)&from,                   (socklen_t*)&fromLen);	   if ( *len == SOCKET_ERROR )   {      int err = getErrno();		      switch (err)      {         case ENOTSOCK:            cerr << "Error fd not a socket" <<   endl;            break;         case ECONNRESET:            cerr << "Error connection reset - host not reachable" <<   endl;            break;				         default:            cerr << "Socket Error=" << err << endl;      }		      return false;   }	   if ( *len < 0 )   {      clog << "socket closed? negative len" << endl;      return false;   }       if ( *len == 0 )   {      clog << "socket closed? zero len" << endl;      return false;   }       *srcPort = ntohs(from.sin_port);   *srcIp = ntohl(from.sin_addr.s_addr);	   if ( (*len)+1 >= originalSize )   {      if (verbose)      {         clog << "Received a message that was too large" << endl;      }      return false;   }   buf[*len]=0;       return true;}bool sendMessage( Socket fd, char* buf, int l,              unsigned int dstIp, unsigned short dstPort,             bool verbose){   assert( fd != INVALID_SOCKET );       int s;   if ( dstPort == 0 )   {      // sending on a connected port       assert( dstIp == 0 );		      s = send(fd,buf,l,0);   }   else   {      assert( dstIp != 0 );      assert( dstPort != 0 );              struct sockaddr_in to;      int toLen = sizeof(to);      memset(&to,0,toLen);              to.sin_family = AF_INET;      to.sin_port = htons(dstPort);      to.sin_addr.s_addr = htonl(dstIp);              s = sendto(fd, buf, l, 0,(sockaddr*)&to, toLen);   }       if ( s == SOCKET_ERROR )   {      int e = getErrno();      switch (e)      {         case ECONNREFUSED:         case EHOSTDOWN:         case EHOSTUNREACH:         {            // quietly ignore this          }         break;         case EAFNOSUPPORT:         {            cerr << "err EAFNOSUPPORT in send" << endl;         }         break;         default:         {            cerr << "err " << e << " "  << strerror(e) << " in send" << endl;         }      }      return false;   }       if ( s == 0 )   {      cerr << "no data sent in send" << endl;      return false;   }       if ( s != l )   {      if (verbose)      {         cerr << "only " << s << " out of " << l << " bytes sent" << endl;      }      return false;   }       return true;}voidinitNetwork(){#ifdef WIN32    WORD wVersionRequested = MAKEWORD( 2, 2 );   WSADATA wsaData;   int err;	   err = WSAStartup( wVersionRequested, &wsaData );   if ( err != 0 )    {      // could not find a usable WinSock DLL      cerr << "Could not load winsock" << endl;      assert(0); // is this is failing, try a different version that 2.2, 1.0 or later will likely work       exit(1);   }       /* Confirm that the WinSock DLL supports 2.2.*/   /* Note that if the DLL supports versions greater    */   /* than 2.2 in addition to 2.2, it will still return */   /* 2.2 in wVersion since that is the version we      */   /* requested.                                        */       if ( LOBYTE( wsaData.wVersion ) != 2 ||        HIBYTE( wsaData.wVersion ) != 2 )    {      /* Tell the user that we could not find a usable */      /* WinSock DLL.                                  */      WSACleanup( );      cerr << "Bad winsock verion" << endl;      assert(0); // is this is failing, try a different version that 2.2, 1.0 or later will likely work       exit(1);   }    #endif}/* ==================================================================== * The Vovida Software License, Version 1.0  *  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. *  * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. *  * 3. The names "VOCAL", "Vovida Open Communication Application Library", *    and "Vovida Open Communication Application Library (VOCAL)" must *    not be used to endorse or promote products derived from this *    software without prior written permission. For written *    permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor *    may "VOCAL" appear in their name, without prior written *    permission of Vovida Networks, Inc. *  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. *  * ==================================================================== *  * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc.  For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. * */// Local Variables:// mode:c++// c-file-style:"ellemtel"// c-file-offsets:((case-label . +))// indent-tabs-mode:nil// End:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产免费久久精品| 99久久精品国产精品久久| 制服丝袜日韩国产| 精品在线免费观看| 亚洲美女视频一区| 国产精品萝li| 精品少妇一区二区三区日产乱码 | 天天av天天翘天天综合网| 一区精品在线播放| 韩国一区二区三区| 欧美色窝79yyyycom| 亚洲精品乱码久久久久久| 欧美在线观看视频一区二区三区| 中文字幕一区二区三区av| 高清在线成人网| 国产精品国模大尺度视频| 97久久人人超碰| 亚洲图片你懂的| 欧美日韩一二三| 麻豆精品一区二区三区| 欧美tickling挠脚心丨vk| 国产资源精品在线观看| 国产人妖乱国产精品人妖| 国产麻豆视频一区| 国产日产欧美一区二区视频| 99这里只有精品| 亚洲精品中文字幕乱码三区| 欧美日韩一二三| 老司机午夜精品| 中文在线资源观看网站视频免费不卡| 丁香网亚洲国际| 亚洲综合色噜噜狠狠| 欧美三区在线观看| 久久97超碰国产精品超碰| 国产欧美一区二区三区在线看蜜臀 | 免费在线一区观看| 久久一区二区三区四区| 成人黄页在线观看| 亚洲成人资源网| 亚洲精品一区二区在线观看| 国产美女久久久久| 成人欧美一区二区三区白人 | 成人av动漫在线| 午夜日韩在线观看| 国产日韩欧美精品综合| 色综合久久综合| 日本aⅴ免费视频一区二区三区| 久久久亚洲精品一区二区三区 | 亚洲综合成人在线| 国产亚洲美州欧州综合国| 日本va欧美va精品发布| 日本乱码高清不卡字幕| 18成人在线观看| 国产乱一区二区| 日韩欧美卡一卡二| 日韩精品乱码免费| 91黄色免费看| 亚洲综合男人的天堂| 国产成人欧美日韩在线电影| 在线观看亚洲精品视频| 亚洲地区一二三色| 777奇米成人网| 久88久久88久久久| 亚洲图片欧美激情| 久久久亚洲精品一区二区三区| 在线免费视频一区二区| 国产大片一区二区| 日本不卡一二三区黄网| 亚洲一区中文在线| 久久你懂得1024| 6080亚洲精品一区二区| 色综合久久中文字幕| 国产一区二区三区免费播放| 亚洲成人免费看| 亚洲精品乱码久久久久久久久| 国产日韩欧美高清| 欧美一二三四在线| 欧美性色黄大片| 色哟哟日韩精品| bt欧美亚洲午夜电影天堂| 国产制服丝袜一区| 精品午夜久久福利影院| 日本午夜精品视频在线观看| 亚洲国产日韩一级| 亚洲精品大片www| 亚洲欧美另类小说视频| 亚洲成人777| 青青草精品视频| 国产精品一品二品| www.亚洲人| 91精品1区2区| 日韩亚洲欧美成人一区| 久久品道一品道久久精品| 中文字幕精品综合| 一区二区三区鲁丝不卡| 亚洲1区2区3区视频| 免费成人av资源网| 高清在线不卡av| 欧美三级蜜桃2在线观看| 日韩一区二区三区四区| 久久这里只有精品首页| 国产精品成人在线观看| 亚洲丰满少妇videoshd| 久久99国内精品| 成人夜色视频网站在线观看| 蜜臀va亚洲va欧美va天堂| 男人的天堂久久精品| 日日摸夜夜添夜夜添亚洲女人| 一区二区三区国产| 午夜电影一区二区三区| 日韩在线观看一区二区| 日韩成人一级片| 极品少妇xxxx偷拍精品少妇| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧洲99久久| 美洲天堂一区二卡三卡四卡视频 | 美国毛片一区二区三区| 国产一区二区福利视频| 色综合久久中文字幕综合网| 欧美一区二区三区影视| 国产日韩欧美一区二区三区综合 | 中文字幕免费不卡在线| 天天综合网天天综合色| 韩国av一区二区三区四区| 91国偷自产一区二区开放时间| 日韩一区二区高清| 亚洲欧美另类在线| 国产一区二区三区高清播放| 欧美日韩一区二区三区视频| 国产欧美视频一区二区三区| 性感美女极品91精品| 国产91对白在线观看九色| 欧美一区二区三区在线视频| 国产自产视频一区二区三区| 精品国产髙清在线看国产毛片| 亚洲国产精品传媒在线观看| 日韩欧美国产三级| 亚洲素人一区二区| 国产一区二区三区美女| 欧美日韩卡一卡二| 日韩一区中文字幕| 国产成人av影院| 日韩视频永久免费| 亚洲一区欧美一区| 91蜜桃网址入口| 国产三区在线成人av| 久久99这里只有精品| 欧美喷潮久久久xxxxx| 亚洲精品ww久久久久久p站| 岛国av在线一区| 欧美电视剧免费观看| 日本特黄久久久高潮| 欧美日韩国产首页在线观看| 一区二区三区在线视频观看| 成人av在线资源网站| 中文字幕av一区二区三区免费看| 激情综合色播五月| 日韩精品一区二区在线| 日本va欧美va欧美va精品| 欧美视频你懂的| 色94色欧美sute亚洲线路一久| 国产精品乱人伦中文| 4438x成人网最大色成网站| 91精品国产色综合久久不卡蜜臀| 免费观看一级特黄欧美大片| 日韩三区在线观看| 成人综合激情网| 亚洲色欲色欲www在线观看| 91首页免费视频| 亚洲电影中文字幕在线观看| 欧美日韩国产乱码电影| 毛片av中文字幕一区二区| 国产午夜精品一区二区三区四区| 欧美日韩国产首页| 日韩三级视频中文字幕| 成人欧美一区二区三区小说| 东方aⅴ免费观看久久av| 国产欧美综合在线观看第十页| 国产成人综合网| 国产精品美日韩| 色婷婷精品久久二区二区蜜臂av | 欧美人成免费网站| 免费观看在线综合色| 精品88久久久久88久久久| 国产精品综合视频| 国产精品久久久久久久久晋中 | 一区二区三区欧美激情| 欧亚洲嫩模精品一区三区| 亚洲成人av电影在线| 欧美一级日韩一级| 国产精品69毛片高清亚洲| 亚洲视频中文字幕| 欧美丰满美乳xxx高潮www| 另类欧美日韩国产在线| 国产精品久久久久久亚洲毛片| 成人黄色大片在线观看| 亚洲综合免费观看高清完整版在线| 欧美日韩精品欧美日韩精品| 青青草国产成人av片免费| 国产日韩欧美不卡|