📄 tcpserver.cpp
字号:
#include<stdio.h>#include<stdlib.h>#include<iostream>#include"../include/mysocket.h"#include"../include/mythread.h"#include<vector>#include"../include/tcpserver.h"TcpServThr::TcpServThr(){ max_connections = MAXCONN; ThrSet = new vector<MyThread *>();}TcpServThr::TcpServThr(int port ,char *hostname):MySocket(AF_INET, SOCK_STREAM, 0, port, hostname){ max_connections = MAXCONN; ThrSet = new vector<MyThread *>();}TcpServThr::TcpServThr(int port, int maxconn, char *hostname): MySocket(AF_INET, SOCK_STREAM, 0, port, hostname){ max_connections = maxconn; ThrSet = new vector<MyThread *>();}TcpServThr::~TcpServThr(){ WaitAllThr(); vector<MyThread *>::iterator it = ThrSet->begin(); while (it != ThrSet->end()) { MyThread *thr = (MyThread *)(*it); delete thr; it++; } delete ThrSet;}int TcpServThr::Init(){ int opt = SO_REUSEADDR; setsockopt(Mysocket, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); if (Bind() == -1) { return socket_error; } if (Listen(max_connections) == -1) { return socket_error; } return 0;}int TcpServThr::Run(){ while (Accept() != -1) { MyThread *Rthread, *Wthread; if (CreateThr(&Rthread, &Wthread) == -1) { return -1; } AddThread(Rthread); AddThread(Wthread); if (Rthread->Start()) { return -1; } if (Wthread->Start()) { return -1; } } return -1;}int TcpServThr::CreateThr(MyThread **Rthread, MyThread **Wthread){ printf("Accept conn\n"); *Rthread = new Receiver(conn_socket, this); *Wthread = new Sender(conn_socket, this); return 0;}void TcpServThr::DealRecv(MyThread *thread){ printf("Receiver is running!\n");}void TcpServThr::DealSend(MyThread *thread){ if (thread == NULL) { return; } ThrSet->push_back(thread);}void TcpServThr::DelThread(MyThread *thread){ vector<MyThread *>::iterator it = ThrSet->begin(); while (it != ThrSet->end()) { if (((MyThread *)*it) == thread) { ThrSet->erase(it); break; } it++; }}int TcpServThr::WaitAllThr(){ vector<MyThread *>::iterator it = ThrSet->begin(); while (it != ThrSet->end()) { MyThread *thr = (MyThread *)(*it); pthread_join(thr->GetId(), NULL); it++; } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -