Open bignmllc opened 2 years ago
I can't reproduce this, unfortunately. The thrown "const char*" is unfortunate; if you look at the source code it becomes clear that epoll didn't return a ready socket. So for some reason the epoll wait returns without a ready socket -- there can be many reasons for this, I'd recommend using strace
to investigate a bit more.
When it works, it looks like this:
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("139.162.166.18")}, 16) = 0
write(4, "GET / HTTP/1.1\n", 15) = 15
write(4, "Host: spheniscida.de\n\n", 22) = 22
shutdown(4, SHUT_WR) = 0
epoll_ctl(3, EPOLL_CTL_ADD, 4, {events=EPOLLIN, data={u32=3047235328, u64=140736240623360}}) = 0
epoll_wait(3, [{events=EPOLLIN, data={u32=3047235328, u64=140736240623360}}], 128, -1) = 1
read(4, "HTTP/1.1 200 OK\r\nServer: nginx/1"..., 2000) = 311
Thanks for the reply. I have decided on using another socket library that is working with my project.
In the examples++/http_examples folder, using modified build.sh of:
!/bin/bash
g++ -o http http.cpp -lsocket++ g++ -o http_2 http_2.cpp -lsocket++ g++ -o http_epoll http_epoll.cpp -lsocket++
everything compiles with no warnings or errors. The http and http_2 programs run fine. However, the http_epoll application runs and terminates with the following output:
$ ./http_epoll terminate called after throwing an instance of 'char const*' Aborted
Test environment:
$ g++ --version g++ (Ubuntu 9.4.0-1ubuntu1~16.04) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ uname -a Linux asusubuntu16 4.15.0-142-generic #146~16.04.1-Ubuntu SMP Tue Apr 13 09:27:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
I tried compiling with g++ v5 but got the same result.