aj3423

Untitled

Jan 21st, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <string>
  2. #include <iostream>
  3. #include <enet/enet.h>
  4. using namespace std;
  5.  
  6. #include "scope_guard.h"
  7. void main()
  8. {
  9.     if(enet_initialize()) {
  10.         cout << "fail init" << endl;
  11.         return;
  12.     }
  13.  
  14.  
  15.     int success = 0;
  16.     int fail = 0;
  17.  
  18.     while(1) {
  19.         ENetHost* client = enet_host_create(NULL,
  20.                             1,
  21.                             2,
  22.                             0,
  23.                             0);
  24.         if(client == NULL) {
  25.             cout << "fail create client" << endl;
  26.             fail++;
  27.             continue;
  28.         }
  29.         scope_guard g1([&]{ enet_host_destroy(client); });
  30.  
  31.         ENetAddress svraddr;
  32.         enet_address_set_host(&svraddr, "127.0.0.1");
  33.         svraddr.port = 9000;
  34.  
  35.         ENetPeer* server = enet_host_connect(client, &svraddr, 2, 0);
  36.  
  37.         if(server == NULL) {
  38.             fail++;
  39.             continue;
  40.         }
  41.  
  42.         ENetEvent event;
  43.         if(enet_host_service (client, &event, 5000) > 0 &&
  44.            event.type == ENET_EVENT_TYPE_CONNECT) {
  45.         } else {
  46.             enet_peer_reset (server);
  47.             fail++;
  48.             continue;
  49.         }
  50.  
  51.         string data(2 * 1024, 'a'); // not ok
  52.         ENetPacket* packet1 = enet_packet_create(data.c_str(), data.length(), ENET_PACKET_FLAG_RELIABLE);
  53.         if(!packet1) {
  54.             fail++;
  55.             continue;
  56.         }
  57.         if(enet_peer_send(server, 0, packet1) < 0) {
  58.             fail++;
  59.             continue;
  60.         }
  61.  
  62.         enet_host_flush (client);
  63.  
  64.         bool disconnected = false;
  65.         while(enet_host_service (client, &event, 5000) > 0) {
  66.             if(event.type == ENET_EVENT_TYPE_RECEIVE) {
  67.                 if(event.packet->dataLength == 2*1024) {
  68.                     success++;
  69.                 } else {
  70.                     fail++;
  71.                 }
  72.                 enet_packet_destroy (event.packet);
  73.                 break;
  74.             } else if(event.type == ENET_EVENT_TYPE_DISCONNECT) {
  75.                 disconnected = true;
  76.                 break;
  77.             }
  78.         }
  79.         if(!disconnected) {
  80.             enet_peer_disconnect(server, 0);
  81.             while(enet_host_service (client, &event, 5000) > 0) {
  82.                 if(event.type == ENET_EVENT_TYPE_DISCONNECT) {
  83.                     break;
  84.                 }
  85.             }
  86.         }
  87.  
  88.         enet_peer_reset(server);
  89.         cout << "success: " << success << ", fail: " << fail << endl;
  90.     }
  91.  
  92.  
  93.     enet_deinitialize();
  94. }
Add Comment
Please, Sign In to add comment