BOOL CServerSocet::StartServer(CString* sError) { if(bCreateSocket) CloseSocket(sError); if(!bInitWinSocket) if (!StartWinSock(sError)) return FALSE; if (!SocketGetHostName(sError)) return FALSE; if (!CreateSocket(sError)) return FALSE; if (!LinkSoketPort(sError)) return FALSE; if (!LinkWindowSocket(hWnd,sError)) return FALSE; if (!ListenSocket(sError)) return FALSE; sokClientSocket = new stSockets *[iMaxCol]; int i; for(i=0;i<iMaxCol;i++) { sokClientSocket[i] = new (stSockets); sokClientSocket[i]->dBase = NULL; sokClientSocket[i]->sUserIP = _T(""); sokClientSocket[i]->bAdmin = FALSE; sokClientSocket[i]->sDataStart = _T(""); sokClientSocket[i]->sok = NULL; sokClientSocket[i]->hThread = 0; } bStatus = TRUE; return TRUE; }
int CXSPAsyncSocket::Start(const char *ip, const int port, const int style, const int lThrNum, const int rThrNum, const int wThrNum) { int sockid = AsyncSocketCreate(ip, port, style); if(sockid > 0) { ListenSocket(); this->CreateThread(lThrNum, m_thrAttr, PTHREAD_SCOPE_SYSTEM, PTHREAD_CREATE_DETACHED); } return 0; }
FTPd::FTPd(void) { WSAData wdata; if (WSAStartup(MAKEWORD(2, 2), &wdata) != 0) { std::cerr << "WSAStartup() failed" << std::endl; } InitSocket(); BindSocket(); ListenSocket(); GetLocalIP(); LoadLocalHostname(); }
//////////////////////////////////////////////////////////////////////////////// /// 名 称:TCPSocket::Init /// 功 能:初始化对象 /// 参 数:void /// 返回 值:bool public //////////////////////////////////////////////////////////////////////////////// bool TCPSocket::Init() { // 读取配置文件 if (!LoadConfig()) { return false; } // 设置读写ID口文件最大数 SetLimitMax(); // 显示当前Socket配置情况 if (!ShowSocketStatus()) { return false; } // 初始化线程池 if (!ThreadPollInit()) { return false; } // 屏蔽多重发送的报错信号 if (!MaskSignal()) { return false; } // 创建Socket if (!CreateSocket()) { return false; } // 创建Epoll if (!CreateEpoll()) { return false; } // 绑定Socket if (!BindSocket()) { return false; } // 开启监听该Socket if (!ListenSocket()) { return false; } return true; }