⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connectionhandler.h

📁 swain-0.5.2.zip的源代码,比较好用,希望大家喜欢.
💻 H
字号:
/*
This file is part of SWAIN (http://sourceforge.net/projects/swain).
Copyright (C) 2006  Daniel Lindstr鰉 and Daniel Nilsson

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA  02110-1301, USA.
*/
#pragma once

class ConnectionHandler;

#include "PacketFactory.h"
#include "PacketHandler.h"
#include "Packet.h"
#include "Select.h"
#include "Socket.h"
#include "Queue.h"

// FD_SETSIZE have to be changed as well in Select if MAX_SOCKETS > 64
#define MAX_SOCKETS 64
#define OBJECT_WAIT_TIME 2000
#define SERVER_PORT 5982

class ConnectionHandler
{
private:
	Socket *sockets[MAX_SOCKETS];
	CRITICAL_SECTION lock;	// Synchronizes access to sockets
	Socket *listen_socket;
	Select *selector;
	HANDLE listen_thread, send_thread;
	bool run_t_listen, run_t_send;
	PacketFactory *packetfactory;
	PacketHandler *packethandler;
	Queue *outgoing;

	static DWORD WINAPI listen(LPVOID lpParameter);
	static DWORD WINAPI send(LPVOID lpParameter);
	int addSocket(Socket *s);
	void removeSocket(Socket *s);
	Socket *getSocket(int cid);
	int getCid(Socket *s);
public:
	ConnectionHandler(PacketFactory *pf);
	~ConnectionHandler(void);
	void setPacketHandler(PacketHandler *ph);
	int connectTo(const char *addr, short port);
	void sendPacket(Packet *p);
	void startListen(int port);
	void startSend(void);
	void startReceive(void);
	void stopListen(void);
	void stopSend(void);
	void stopReceive(void);
	void startHandle(void);
	void stopHandle(void);
	void closeConnection(int cid);
	int newConnection(char *host, int port);
	int getAddresByCId(int cid);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -