同步操作将从 libhv/libhv 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/** TcpServer_test.cpp** @build make evpp* @server bin/TcpServer_test 1234* @client bin/TcpClient_test 1234**/#include <iostream>#include "TcpServer.h"using namespace hv;#define TEST_TLS 0int main(int argc, char* argv[]) {if (argc < 2) {printf("Usage: %s port\n", argv[0]);return -10;}int port = atoi(argv[1]);hlog_set_level(LOG_LEVEL_DEBUG);TcpServer srv;int listenfd = srv.createsocket(port);if (listenfd < 0) {return -20;}printf("server listen on port %d, listenfd=%d ...\n", port, listenfd);srv.onConnection = [](const SocketChannelPtr& channel) {std::string peeraddr = channel->peeraddr();if (channel->isConnected()) {printf("%s connected! connfd=%d id=%d tid=%ld\n", peeraddr.c_str(), channel->fd(), channel->id(), currentThreadEventLoop->tid());} else {printf("%s disconnected! connfd=%d id=%d tid=%ld\n", peeraddr.c_str(), channel->fd(), channel->id(), currentThreadEventLoop->tid());}};srv.onMessage = [](const SocketChannelPtr& channel, Buffer* buf) {// echoprintf("< %.*s\n", (int)buf->size(), (char*)buf->data());channel->write(buf);};srv.setThreadNum(4);srv.setLoadBalance(LB_LeastConnections);#if TEST_TLShssl_ctx_opt_t ssl_opt;memset(&ssl_opt, 0, sizeof(hssl_ctx_opt_t));ssl_opt.crt_file = "cert/server.crt";ssl_opt.key_file = "cert/server.key";ssl_opt.verify_peer = 0;srv.withTLS(&ssl_opt);#endifsrv.start();std::string str;while (std::getline(std::cin, str)) {if (str == "close") {srv.closesocket();} else if (str == "start") {srv.start();} else if (str == "stop") {srv.stop();break;} else {srv.broadcast(str.data(), str.size());}}return 0;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。