1
0

TcpServer_test.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * TcpServer_test.cpp
  3. *
  4. * @build make evpp
  5. * @server bin/TcpServer_test 1234
  6. * @client bin/TcpClient_test 1234
  7. *
  8. */
  9. #include "TcpServer.h"
  10. using namespace hv;
  11. int main(int argc, char* argv[]) {
  12. if (argc < 2) {
  13. printf("Usage: %s port\n", argv[0]);
  14. return -10;
  15. }
  16. int port = atoi(argv[1]);
  17. hlog_set_level(LOG_LEVEL_DEBUG);
  18. TcpServer srv;
  19. int listenfd = srv.createsocket(port);
  20. if (listenfd < 0) {
  21. return -20;
  22. }
  23. printf("server listen on port %d, listenfd=%d ...\n", port, listenfd);
  24. srv.onConnection = [](const SocketChannelPtr& channel) {
  25. std::string peeraddr = channel->peeraddr();
  26. if (channel->isConnected()) {
  27. printf("%s connected! connfd=%d id=%d tid=%ld\n", peeraddr.c_str(), channel->fd(), channel->id(), currentThreadEventLoop->tid());
  28. } else {
  29. printf("%s disconnected! connfd=%d id=%d tid=%ld\n", peeraddr.c_str(), channel->fd(), channel->id(), currentThreadEventLoop->tid());
  30. }
  31. };
  32. srv.onMessage = [](const SocketChannelPtr& channel, Buffer* buf) {
  33. // echo
  34. printf("< %.*s\n", (int)buf->size(), (char*)buf->data());
  35. channel->write(buf);
  36. };
  37. srv.setThreadNum(4);
  38. srv.start();
  39. // press Enter to stop
  40. while (getchar() != '\n');
  41. return 0;
  42. }