Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <iostream>
- #include <enet/enet.h>
- using namespace std;
- #include "scope_guard.h"
- void main()
- {
- if(enet_initialize()) {
- cout << "fail init" << endl;
- return;
- }
- int success = 0;
- int fail = 0;
- while(1) {
- ENetHost* client = enet_host_create(NULL,
- 1,
- 2,
- 0,
- 0);
- if(client == NULL) {
- cout << "fail create client" << endl;
- fail++;
- continue;
- }
- scope_guard g1([&]{ enet_host_destroy(client); });
- ENetAddress svraddr;
- enet_address_set_host(&svraddr, "127.0.0.1");
- svraddr.port = 9000;
- ENetPeer* server = enet_host_connect(client, &svraddr, 2, 0);
- if(server == NULL) {
- fail++;
- continue;
- }
- ENetEvent event;
- if(enet_host_service (client, &event, 5000) > 0 &&
- event.type == ENET_EVENT_TYPE_CONNECT) {
- } else {
- enet_peer_reset (server);
- fail++;
- continue;
- }
- string data(2 * 1024, 'a'); // not ok
- ENetPacket* packet1 = enet_packet_create(data.c_str(), data.length(), ENET_PACKET_FLAG_RELIABLE);
- if(!packet1) {
- fail++;
- continue;
- }
- if(enet_peer_send(server, 0, packet1) < 0) {
- fail++;
- continue;
- }
- enet_host_flush (client);
- bool disconnected = false;
- while(enet_host_service (client, &event, 5000) > 0) {
- if(event.type == ENET_EVENT_TYPE_RECEIVE) {
- if(event.packet->dataLength == 2*1024) {
- success++;
- } else {
- fail++;
- }
- enet_packet_destroy (event.packet);
- break;
- } else if(event.type == ENET_EVENT_TYPE_DISCONNECT) {
- disconnected = true;
- break;
- }
- }
- if(!disconnected) {
- enet_peer_disconnect(server, 0);
- while(enet_host_service (client, &event, 5000) > 0) {
- if(event.type == ENET_EVENT_TYPE_DISCONNECT) {
- break;
- }
- }
- }
- enet_peer_reset(server);
- cout << "success: " << success << ", fail: " << fail << endl;
- }
- enet_deinitialize();
- }
Add Comment
Please, Sign In to add comment