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

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

?? gnutella.c

?? Serveez是一個服務器框架
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * gnutella.c - gnutella protocol implementation * * Copyright (C) 2000, 2001 Stefan Jahn <stefan@lkcc.org> * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. *  * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this package; see the file COPYING.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA.   * * $Id: gnutella.c,v 1.42 2001/08/01 10:16:22 ela Exp $ * */#if HAVE_CONFIG_H# include <config.h>#endif#if ENABLE_GNUTELLA#define _GNU_SOURCE#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <sys/stat.h>#if HAVE_UNISTD_H# include <unistd.h>#endif#include <sys/types.h>#include <fcntl.h>#include <errno.h>#ifndef __MINGW32__# include <sys/types.h># include <sys/socket.h># include <netinet/in.h># include <arpa/inet.h>#endif#ifdef __MINGW32__# include <winsock2.h># include <io.h>#endif#if HAVE_DIRECT_H# include <direct.h>#endif#ifdef __MINGW32__# define mkdir(path, mode) mkdir (path)#endif#include "libserveez.h"#include "gnutella.h"#include "nut-transfer.h"#include "nut-route.h"#include "nut-core.h"#include "nut-hostlist.h"#include "nut-request.h"/* * Default search patterns. */char *nut_search_patterns[] ={  "Puppe3000",  "Meret Becker",  NULL};/* * Default configuration hash for the gnutella spider. */nut_config_t nut_config = {  0,                   /* if set we do not listen on the above port cfg */  NUT_MAX_TTL,         /* maximum ttl for a gnutella packet */  NUT_TTL,             /* initial ttl for a gnutella packet */  NULL,                /* array of initial hosts */  NUT_GUID,            /* this servers GUID */  NULL,                /* routing table */  NULL,                /* connected hosts hash */  NULL,                /* default search pattern */  0,                   /* current search pattern index */  30,                  /* limit amount of search reply records */  NULL,                /* this servers created packets */  0,                   /* routing errors */  0,                   /* files within connected network */  0,                   /* file size (in KB) */  0,                   /* hosts within the connected network */  "/tmp",              /* where to store downloaded files */  "/tmp",              /* local search database path */  0,                   /* concurrent downloads */  4,                   /* maximum concurrent downloads */  28,                  /* connection speed (KBit/s) */  28,                  /* minimum connection speed for searching */  NULL,                /* file extensions */  NULL,                /* host catcher */  4,                   /* number of connections to keep up */  NULL,                /* force the local ip to this value */  0,                   /* calculated from `force_ip' */  0,                   /* force the local port to this value */  0,                   /* calculated from `force_port' */  NULL,                /* recent query hash */  NULL,                /* reply hash for routing push requests */  NULL,                /* push request hash */  NULL,                /* shared file array */  0,                   /* number of database files */  0,                   /* size of database in KB */  0,                   /* current number of uploads */  4,                   /* maximum number of uploads */  "gnutella-net",      /* configurable gnutella net url */  NULL,                /* detection string for the above value */};/* * Defining configuration file associations with key-value-pairs. */svz_key_value_pair_t nut_config_prototype[] = {  SVZ_REGISTER_STRARRAY ("hosts", nut_config.hosts, SVZ_ITEM_NOTDEFAULTABLE),  SVZ_REGISTER_STRARRAY ("search", nut_config.search, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("search-limit", nut_config.search_limit, 		    SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("max-ttl", nut_config.max_ttl, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("ttl", nut_config.ttl, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_STR ("download-path", nut_config.save_path, 		    SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_STR ("share-path", nut_config.share_path, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("max-downloads", nut_config.max_dnloads, 		    SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("connection-speed", nut_config.speed, 		    SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("min-speed", nut_config.min_speed, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_STRARRAY ("file-extensions", nut_config.extensions, 			 SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("connections", nut_config.connections, 		    SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_STR ("force-ip", nut_config.force_ip, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("force-port", nut_config.force_port, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_INT ("max-uploads", nut_config.max_uploads, 		    SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_STR ("net-url", nut_config.net_url, SVZ_ITEM_DEFAULTABLE),  SVZ_REGISTER_END ()};/* * Definition of this server. */svz_servertype_t nut_server_definition ={  "gnutella spider version " NUT_VERSION, /* long description */  "nut",                                  /* instance description */  nut_global_init,                        /* global initializer */  nut_init,                               /* instance initializer */  nut_detect_proto,                       /* protocol detection */  nut_connect_socket,                     /* client connection callback */  nut_finalize,                           /* instance destructor */  nut_global_finalize,                    /* class destructor */  nut_info_client,                        /* server info callback */  nut_info_server,                        /* client info callback */  nut_server_notify,                      /* server timer routine */  NULL,                                   /* no handle request callback */  &nut_config,                            /* default configuration */  sizeof (nut_config),                    /* size of this configuration */  nut_config_prototype                    /* configuration items */};/* * The next three functions `nut_hash_keylen', `nut_hash_equals' and * `nut_hash_code' are the routing table hash callbacks to handle * GUIDs as keys instead of plain NULL terminated character strings. */static unsignednut_hash_keylen (char *id){  return NUT_GUID_SIZE;}static int nut_hash_equals (char *id1, char *id2){  return memcmp (id1, id2, NUT_GUID_SIZE);} static unsigned long nut_hash_code (char *id){  int n;  unsigned long code = 0;    for (n = 0; n < NUT_GUID_SIZE; n++)    {      code = (code << 2) ^ id[n];    }  return code;}/* * This is the default idle function for self connected gnutella hosts. * It simply returns an error if the socket was not connected in a * certain time. */intnut_connect_timeout (svz_socket_t *sock){  /*    * Did we try to connect to another host in order to download something,   * but failed within a certain time ? Then we need to send a push request   * to the host providing the original data.   */  if (sock->userflags & NUT_FLAG_DNLOAD)    {      nut_send_push (sock->cfg, sock->data);    }  return -1;}/* * The following routine tries to connect to a given gnutella host. * It returns -1 on errors and zero otherwise. */static intnut_connect_host (nut_config_t *cfg, char *host){  nut_host_t *client;  svz_socket_t *sock;  unsigned long ip;  unsigned short port;  int ret = -1;  /* try getting ip address and port */  if (nut_parse_addr (host, &ip, &port) == -1)    {      svz_log (LOG_WARNING, "nut: invalid host `%s'\n", host);      return ret;    }  /* get client from host catcher hash */  client = (nut_host_t *) svz_hash_get (cfg->net, host);  /* try to connect to this host */  if ((sock = svz_tcp_connect (ip, port)) != NULL)    {      svz_log (LOG_NOTICE, "nut: connecting %s:%u\n",	       svz_inet_ntoa (ip), ntohs (port));            sock->cfg = cfg;      sock->flags |= SOCK_FLAG_NOFLOOD;      sock->check_request = nut_detect_connect;      sock->idle_func = nut_connect_timeout;      sock->idle_counter = NUT_CONNECT_TIMEOUT;      svz_sock_printf (sock, NUT_CONNECT);      ret = 0;    }  /*    * If we could not connect then delete the client from host catcher    * hash and free the client structure.   */  if (client)    {      svz_hash_delete (cfg->net, host);      svz_free (client);    }  return ret;}/* * When establishing a new connection to another gnutella server this * functions pings it to get all further servers behind this server. */intnut_init_ping (svz_socket_t *sock){  nut_config_t *cfg = sock->cfg;  nut_client_t *client = sock->data;  nut_packet_t *pkt;  nut_header_t hdr;  svz_uint8_t *header;  /* create new gnutella header */  nut_calc_guid (hdr.id);  hdr.function = NUT_PING_REQ;  hdr.ttl = (svz_uint8_t) cfg->ttl;  hdr.hop = 0;  hdr.length = 0;  header = nut_put_header (&hdr);  /* put into sent packet hash */  pkt = svz_malloc (sizeof (nut_packet_t));  pkt->sock = sock;  pkt->sent = time (NULL);  svz_hash_put (cfg->packet, (char *) hdr.id, pkt);  /* update client and server statistics */  cfg->nodes -= client->nodes;  cfg->files -= client->files;  cfg->size -= client->size;  client->nodes = 0;  client->files = 0;  client->size = 0;  return svz_sock_write (sock, (char *) header, SIZEOF_NUT_HEADER);}/* * The gnutella servers global initializer. */intnut_global_init (svz_servertype_t *server){#ifdef __MINGW32__  /* try getting M$'s GUID creation routine */  if ((oleHandle = LoadLibrary ("ole32.dll")) != NULL)    {      CreateGuid = (CreateGuidProc) 	GetProcAddress (oleHandle, "CoCreateGuid");    }#endif /* __MINGW32__ */  /* initialize random seed */  srand (time (NULL));  /* initialize configuration default values */  nut_config.search = svz_config_strarray_create (nut_search_patterns);#if 0  /* Print structure sizes. */  printf ("header     : %d\n", sizeof (nut_header_t));  printf ("ping reply : %d\n", sizeof (nut_pong_t));  printf ("query      : %d\n", sizeof (nut_query_t));  printf ("record     : %d\n", sizeof (nut_record_t));  printf ("reply      : %d\n", sizeof (nut_reply_t));  printf ("push       : %d\n", sizeof (nut_push_t));  printf ("host       : %d\n", sizeof (nut_host_t));  printf ("client     : %d\n", sizeof (nut_client_t));  printf ("packet     : %d\n", sizeof (nut_packet_t));  printf ("push reply : %d\n", sizeof (nut_push_reply_t));  printf ("file       : %d\n", sizeof (nut_file_t));  printf ("config     : %d\n", sizeof (nut_config_t));  printf ("transfer   : %d\n", sizeof (nut_transfer_t));#endif  return 0;}/* * Gnutella spider server's instance initializer. */intnut_init (svz_server_t *server){  nut_config_t *cfg = server->cfg;  int n = 0;  struct stat buf;  char *p;  /* check the download and share path first */  if (strlen (cfg->save_path) == 0 || strlen (cfg->share_path) == 0)    {      svz_log (LOG_ERROR, "nut: no download/share path given\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
北条麻妃一区二区三区| 在线免费不卡电影| 99久久亚洲一区二区三区青草| 欧洲av一区二区嗯嗯嗯啊| 日韩午夜在线观看| 亚洲欧美日韩精品久久久久| 久久99国产精品久久| 91麻豆成人久久精品二区三区| 欧美高清精品3d| 亚洲女爱视频在线| 国产成人在线观看免费网站| 欧美日韩国产区一| 亚洲精品你懂的| 成人精品电影在线观看| 精品久久久三级丝袜| 亚洲成人www| 日本精品一区二区三区高清 | 国产亚洲女人久久久久毛片| 亚洲成人免费观看| 在线免费观看一区| 亚洲人吸女人奶水| www.亚洲在线| 国产精品区一区二区三区| 久久se精品一区二区| 欧美区视频在线观看| 亚洲亚洲人成综合网络| 日本道精品一区二区三区| 日本一区二区久久| 国产成人精品免费网站| 久久久一区二区三区捆绑**| 老汉av免费一区二区三区 | 亚洲精品va在线观看| va亚洲va日韩不卡在线观看| 欧美国产精品v| 国产成人精品亚洲日本在线桃色| 26uuu精品一区二区三区四区在线| 日本一区中文字幕| 日韩女优毛片在线| 美脚の诱脚舐め脚责91| 欧美xxxxx牲另类人与| 美女免费视频一区| 日韩美女一区二区三区四区| 免费观看在线色综合| 日韩视频一区二区三区| 蜜臀精品一区二区三区在线观看 | 亚洲午夜成aⅴ人片| 欧美日韩在线播放一区| 亚洲一区二区三区美女| 欧美久久久久中文字幕| 亚洲成va人在线观看| 欧美伦理影视网| 欧美最新大片在线看| 婷婷中文字幕一区三区| 91精品国产综合久久久久久久 | 日本怡春院一区二区| 日韩视频在线一区二区| 国产精品一级在线| 亚洲欧洲综合另类在线| 欧美色大人视频| 国产呦精品一区二区三区网站| 欧美激情一区二区在线| 欧美色网站导航| 韩国v欧美v亚洲v日本v| 日韩久久一区二区| 欧美精品乱人伦久久久久久| 国产一区二区三区不卡在线观看| 亚洲欧美怡红院| 欧美美女网站色| 成年人国产精品| 日本中文字幕一区| 中文字幕一区二区三区四区| 91麻豆精品国产| 成人福利视频在线| 日本亚洲三级在线| 国产精品色哟哟| 日韩一级片网址| 99久久国产综合色|国产精品| 污片在线观看一区二区| 国产精品美女一区二区三区 | 欧美日韩黄色影视| 国产成人夜色高潮福利影视| 亚洲国产日日夜夜| 国产精品污www在线观看| 51精品视频一区二区三区| 懂色av一区二区三区蜜臀| 三级在线观看一区二区 | 精品乱码亚洲一区二区不卡| av电影一区二区| 精品一区二区在线视频| 亚洲自拍偷拍九九九| 国产人成亚洲第一网站在线播放| 欧美三级日韩在线| 色综合久久久久综合体桃花网| 看电影不卡的网站| 婷婷国产v国产偷v亚洲高清| 国产精品福利av| 国产亚洲欧美中文| 日韩视频免费观看高清完整版| 色婷婷久久久亚洲一区二区三区 | 美日韩一级片在线观看| 亚洲一区影音先锋| 亚洲摸摸操操av| 国产精品国产三级国产aⅴ原创 | 免费高清在线一区| 亚洲成在线观看| 亚洲综合在线视频| 亚洲裸体在线观看| ...中文天堂在线一区| 中文字幕的久久| 久久久国产综合精品女国产盗摄| 日韩欧美一二三区| 欧美www视频| 精品蜜桃在线看| 精品欧美久久久| 日韩欧美一区二区在线视频| 正在播放一区二区| 欧美一区二区视频在线观看2022| 欧美男同性恋视频网站| 欧美福利视频导航| 日韩欧美一区二区不卡| 精品国产91亚洲一区二区三区婷婷 | 蜜臀av一区二区在线免费观看 | 亚洲四区在线观看| 亚洲美女在线一区| 亚洲一区二区精品视频| 日韩成人免费看| 久久成人18免费观看| 国产一区二区在线电影| 国产在线观看一区二区| 成人免费高清视频| 日本电影欧美片| 欧美精品丝袜中出| 2021久久国产精品不只是精品| 久久综合久久久久88| 国产精品久99| 性欧美大战久久久久久久久| 久久99久久精品| 成人av网址在线| 欧美三级乱人伦电影| 精品黑人一区二区三区久久| 中文一区一区三区高中清不卡| 中文字幕中文字幕一区| 午夜国产不卡在线观看视频| 久久成人免费日本黄色| 成人短视频下载| 欧美男生操女生| 日本一区二区三区视频视频| 亚洲综合色网站| 国内精品伊人久久久久影院对白| 成人午夜电影小说| 欧美卡1卡2卡| 国产精品视频观看| 三级在线观看一区二区| 国产成人h网站| 欧美电影在线免费观看| 国产欧美综合在线观看第十页| 一区二区激情视频| 国产精品一区二区x88av| 在线视频你懂得一区| 久久久久国产免费免费| 亚洲va国产天堂va久久en| 成人中文字幕合集| 欧美一区二区三区成人| 亚洲日本乱码在线观看| 狠狠色丁香久久婷婷综合_中 | 懂色av中文一区二区三区| 欧美日韩视频在线观看一区二区三区| 欧美tk—视频vk| 夜夜精品视频一区二区| 国产黑丝在线一区二区三区| 欧美精品久久99久久在免费线| 国产欧美一区二区三区在线老狼 | 欧美日韩精品是欧美日韩精品| 久久久久久久国产精品影院| 亚洲二区在线观看| 91免费国产视频网站| 国产欧美一区在线| 国产原创一区二区三区| 欧美日韩国产不卡| 亚洲女同一区二区| 成人高清伦理免费影院在线观看| 精品国产免费一区二区三区香蕉| 亚洲成在人线免费| 91福利国产成人精品照片| 国产精品视频观看| 丁香啪啪综合成人亚洲小说| 日韩一区二区在线观看| 一卡二卡欧美日韩| 色偷偷久久人人79超碰人人澡 | 日韩亚洲欧美中文三级| 午夜久久福利影院| 欧美日韩性生活| 亚洲午夜精品在线| 欧美三级电影在线观看| 亚洲制服丝袜av| 欧美性xxxxxxxx| 亚洲sss视频在线视频| 欧美久久久久久久久中文字幕| 亚洲一区二区三区精品在线| 欧美三日本三级三级在线播放|