亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? socketft.h

?? 此壓縮包內有cast、blowfish、simple、des、cryptlib、rsa、mqueue、xtrcrypt、gf256、base32,base64、modexppc、network等一些的
?? H
字號:
#ifndef CRYPTOPP_SOCKETFT_H
#define CRYPTOPP_SOCKETFT_H

#include "config.h"

#ifdef SOCKETS_AVAILABLE

#include "network.h"
#include "queue.h"

#ifdef USE_WINDOWS_STYLE_SOCKETS
#	if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
#		error Winsock 1 is not supported by this library. Please include this file or winsock2.h before windows.h.
#	endif
#include <winsock2.h>
#include "winpipes.h"
#else
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#endif

NAMESPACE_BEGIN(CryptoPP)

#ifdef USE_WINDOWS_STYLE_SOCKETS
typedef ::SOCKET socket_t;
#else
typedef int socket_t;
const socket_t INVALID_SOCKET = -1;
// cygwin 1.1.4 doesn't have SHUT_RD
const int SD_RECEIVE = 0;
const int SD_SEND = 1;
const int SD_BOTH = 2;
const int SOCKET_ERROR = -1;
#endif

#ifndef socklen_t
typedef TYPE_OF_SOCKLEN_T socklen_t;	// see config.h
#endif

//! wrapper for Windows or Berkeley Sockets
class Socket
{
public:
	//! exception thrown by Socket class
	class Err : public OS_Error
	{
	public:
		Err(socket_t s, const std::string& operation, int error);
		socket_t GetSocket() const {return m_s;}

	private:
		socket_t m_s;
	};

	Socket(socket_t s = INVALID_SOCKET, bool own=false) : m_s(s), m_own(own) {}
	Socket(const Socket &s) : m_s(s.m_s), m_own(false) {}
	virtual ~Socket();

	bool GetOwnership() const {return m_own;}
	void SetOwnership(bool own) {m_own = own;}

	operator socket_t() {return m_s;}
	socket_t GetSocket() const {return m_s;}
	void AttachSocket(socket_t s, bool own=false);
	socket_t DetachSocket();
	void CloseSocket();

	void Create(int nType = SOCK_STREAM);
	void Bind(unsigned int port, const char *addr=NULL);
	void Bind(const sockaddr* psa, socklen_t saLen);
	void Listen(int backlog=5);
	// the next three functions return false if the socket is in nonblocking mode
	// and the operation cannot be completed immediately
	bool Connect(const char *addr, unsigned int port);
	bool Connect(const sockaddr* psa, socklen_t saLen);
	bool Accept(Socket& s, sockaddr *psa=NULL, socklen_t *psaLen=NULL);
	void GetSockName(sockaddr *psa, socklen_t *psaLen);
	void GetPeerName(sockaddr *psa, socklen_t *psaLen);
	unsigned int Send(const byte* buf, size_t bufLen, int flags=0);
	unsigned int Receive(byte* buf, size_t bufLen, int flags=0);
	void ShutDown(int how = SD_SEND);

	void IOCtl(long cmd, unsigned long *argp);
	bool SendReady(const timeval *timeout);
	bool ReceiveReady(const timeval *timeout);

	virtual void HandleError(const char *operation) const;
	void CheckAndHandleError_int(const char *operation, int result) const
		{if (result == SOCKET_ERROR) HandleError(operation);}
	void CheckAndHandleError(const char *operation, socket_t result) const
		{if (result == SOCKET_ERROR) HandleError(operation);}
#ifdef USE_WINDOWS_STYLE_SOCKETS
	void CheckAndHandleError(const char *operation, BOOL result) const
		{assert(result==TRUE || result==FALSE); if (!result) HandleError(operation);}
	void CheckAndHandleError(const char *operation, bool result) const
		{if (!result) HandleError(operation);}
#endif

	//! look up the port number given its name, returns 0 if not found
	static unsigned int PortNameToNumber(const char *name, const char *protocol="tcp");
	//! start Windows Sockets 2
	static void StartSockets();
	//! calls WSACleanup for Windows Sockets
	static void ShutdownSockets();
	//! returns errno or WSAGetLastError
	static int GetLastError();
	//! sets errno or calls WSASetLastError
	static void SetLastError(int errorCode);

protected:
	virtual void SocketChanged() {}

	socket_t m_s;
	bool m_own;
};

class SocketsInitializer
{
public:
	SocketsInitializer() {Socket::StartSockets();}
	~SocketsInitializer() {try {Socket::ShutdownSockets();} catch (...) {}}
};

class SocketReceiver : public NetworkReceiver
{
public:
	SocketReceiver(Socket &s);

#ifdef USE_BERKELEY_STYLE_SOCKETS
	bool MustWaitToReceive() {return true;}
#else
	~SocketReceiver();
	bool MustWaitForResult() {return true;}
#endif
	bool Receive(byte* buf, size_t bufLen);
	unsigned int GetReceiveResult();
	bool EofReceived() const {return m_eofReceived;}

	unsigned int GetMaxWaitObjectCount() const {return 1;}
	void GetWaitObjects(WaitObjectContainer &container, CallStack const& callStack);

private:
	Socket &m_s;
	bool m_eofReceived;

#ifdef USE_WINDOWS_STYLE_SOCKETS
	WindowsHandle m_event;
	OVERLAPPED m_overlapped;
	bool m_resultPending;
	DWORD m_lastResult;
#else
	unsigned int m_lastResult;
#endif
};

class SocketSender : public NetworkSender
{
public:
	SocketSender(Socket &s);

#ifdef USE_BERKELEY_STYLE_SOCKETS
	bool MustWaitToSend() {return true;}
#else
	~SocketSender();
	bool MustWaitForResult() {return true;}
	bool MustWaitForEof() { return true; }
	bool EofSent();
#endif
	void Send(const byte* buf, size_t bufLen);
	unsigned int GetSendResult();
	void SendEof();

	unsigned int GetMaxWaitObjectCount() const {return 1;}
	void GetWaitObjects(WaitObjectContainer &container, CallStack const& callStack);

private:
	Socket &m_s;
#ifdef USE_WINDOWS_STYLE_SOCKETS
	WindowsHandle m_event;
	OVERLAPPED m_overlapped;
	bool m_resultPending;
	DWORD m_lastResult;
#else
	unsigned int m_lastResult;
#endif
};

//! socket-based implementation of NetworkSource
class SocketSource : public NetworkSource, public Socket
{
public:
	SocketSource(socket_t s = INVALID_SOCKET, bool pumpAll = false, BufferedTransformation *attachment = NULL)
		: NetworkSource(attachment), Socket(s), m_receiver(*this)
	{
		if (pumpAll)
			PumpAll();
	}

private:
	NetworkReceiver & AccessReceiver() {return m_receiver;}
	SocketReceiver m_receiver;
};

//! socket-based implementation of NetworkSink
class SocketSink : public NetworkSink, public Socket
{
public:
	SocketSink(socket_t s=INVALID_SOCKET, unsigned int maxBufferSize=0, unsigned int autoFlushBound=16*1024)
		: NetworkSink(maxBufferSize, autoFlushBound), Socket(s), m_sender(*this) {}

	void SendEof() {ShutDown(SD_SEND);}

private:
	NetworkSender & AccessSender() {return m_sender;}
	SocketSender m_sender;
};

NAMESPACE_END

#endif	// #ifdef SOCKETS_AVAILABLE

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品黑人久久久 | 麻豆国产精品官网| 精品一区二区在线免费观看| 国产不卡免费视频| 欧美丝袜丝交足nylons| 精品福利视频一区二区三区| 粉嫩av一区二区三区粉嫩| 精品无人区卡一卡二卡三乱码免费卡 | 久久国产欧美日韩精品| 国产成人精品免费一区二区| 色悠悠亚洲一区二区| 精品久久久久香蕉网| 一区二区三区国产精华| 国产毛片一区二区| 欧美视频你懂的| 国产精品麻豆视频| 麻豆免费精品视频| 欧洲一区二区三区在线| 中文字幕的久久| 九色|91porny| 欧美日韩高清一区二区| 一色屋精品亚洲香蕉网站| 久久99九九99精品| 欧美理论片在线| 一区二区三区四区五区视频在线观看| 久久国产乱子精品免费女| 欧美探花视频资源| 亚洲人xxxx| 成人高清视频在线观看| 久久综合九色综合97婷婷女人| 天堂午夜影视日韩欧美一区二区| av高清久久久| 中文字幕 久热精品 视频在线| 久久精品久久精品| 91精品国产麻豆| 午夜精品久久久久久久99水蜜桃 | 麻豆精品在线看| 欧美日韩在线免费视频| 一区二区三区精品在线| 91一区二区在线| 中文字幕制服丝袜成人av| 欧美日韩一区在线| 一片黄亚洲嫩模| 在线免费观看不卡av| 亚洲老司机在线| 色88888久久久久久影院野外| 国产精品女同一区二区三区| 成人在线视频一区| 国产精品久久久久久久久免费丝袜 | 欧美性做爰猛烈叫床潮| 亚洲精品乱码久久久久久黑人 | 精品国产第一区二区三区观看体验| 亚洲永久精品大片| 欧美伊人精品成人久久综合97| 亚洲色图在线看| 欧美在线免费观看视频| 亚洲妇女屁股眼交7| 欧美日韩一级二级三级| 午夜国产精品一区| 91精品国产aⅴ一区二区| 免费精品视频在线| 精品国产凹凸成av人网站| 国产原创一区二区| 国产精品人妖ts系列视频| 成人app在线观看| 一区二区三区自拍| 欧美精品一卡两卡| 狠狠色丁香婷婷综合久久片| 国产网红主播福利一区二区| eeuss鲁片一区二区三区在线观看| 亚洲欧美日韩国产手机在线| 欧美三级韩国三级日本一级| 日av在线不卡| 中文字幕 久热精品 视频在线 | 5858s免费视频成人| 久久精品国产99国产| 精品久久久久久久久久久久久久久 | 岛国一区二区在线观看| 亚洲精品写真福利| 91精品国产手机| 岛国av在线一区| 亚洲综合久久av| 欧美精品一区二区三区高清aⅴ | 欧洲色大大久久| 亚洲综合色网站| 欧美日韩高清一区二区| 精品一区二区综合| 国产精品久久久久影院色老大| 色美美综合视频| 麻豆专区一区二区三区四区五区| 国产网红主播福利一区二区| 欧美主播一区二区三区| 狠狠色狠狠色综合系列| 亚洲免费观看在线视频| 欧美成人女星排行榜| 99久久99久久综合| 美女尤物国产一区| 亚洲色图在线播放| 精品捆绑美女sm三区| 色综合久久综合网| 国产一区二区三区| 国产精品色眯眯| 色哟哟在线观看一区二区三区| 有码一区二区三区| 欧美激情一区三区| 91精品国产欧美日韩| 99re成人精品视频| 国产精品888| 麻豆久久一区二区| 五月天丁香久久| 一区二区三区在线观看国产| 国产区在线观看成人精品| 欧美一区二区三区日韩| 日本高清无吗v一区| 成人福利视频在线| 欧美视频精品在线观看| 国产成人精品免费网站| 免费成人av资源网| 亚洲国产精品久久不卡毛片 | 久久久久久久国产精品影院| 69av一区二区三区| 欧美性视频一区二区三区| 99精品国产99久久久久久白柏 | 亚洲精品网站在线观看| 中文字幕中文乱码欧美一区二区| 久久久综合精品| 欧美精品一区视频| 亚洲精品一线二线三线无人区| 91精品国产色综合久久ai换脸 | www久久久久| 精品久久99ma| 欧美精品一区男女天堂| 久久天堂av综合合色蜜桃网| 精品国产乱码久久久久久1区2区| 日韩欧美国产1| 精品国产a毛片| 久久网站热最新地址| 久久久久久夜精品精品免费| 久久久久国产精品厨房| 国产精品私人影院| 日韩美女视频一区二区| 一区二区三区不卡在线观看| 亚洲国产成人av好男人在线观看| 亚洲国产综合在线| aaa亚洲精品一二三区| 久久精品视频一区二区| 久久这里都是精品| 国产午夜精品一区二区| 欧美国产视频在线| 国产精品超碰97尤物18| 亚洲精品日韩综合观看成人91| 亚洲精选视频免费看| 亚洲午夜在线电影| 美洲天堂一区二卡三卡四卡视频| 久久精品二区亚洲w码| 国产精品自拍网站| www.亚洲免费av| 欧美性xxxxxx少妇| 精品少妇一区二区三区在线视频| 国产肉丝袜一区二区| 亚洲天堂福利av| 日本va欧美va欧美va精品| 国产高清在线精品| 在线免费视频一区二区| 日韩免费成人网| 国产精品传媒在线| 青青草原综合久久大伊人精品| 国产精品亚洲第一区在线暖暖韩国 | 亚洲一区在线免费观看| 欧美xingq一区二区| 日本一区二区在线不卡| 一区二区三区91| 韩国成人在线视频| 一本大道久久a久久精品综合| 69av一区二区三区| 国产精品天干天干在观线 | 91精品国产色综合久久久蜜香臀| 国产午夜精品一区二区| 一区二区三国产精华液| 国产精品一区专区| 69久久夜色精品国产69蝌蚪网| 国产精品欧美一级免费| 麻豆精品视频在线观看| 在线欧美一区二区| 亚洲香肠在线观看| 国产99久久久国产精品潘金网站| 欧美日韩精品欧美日韩精品一| 日本一区二区视频在线| 日本特黄久久久高潮| 色婷婷av一区二区三区之一色屋| 久久亚洲欧美国产精品乐播| 五月天国产精品| 色狠狠色噜噜噜综合网| 国产精品无遮挡| 国产一区二区三区四| 69堂亚洲精品首页| 日本一区二区免费在线观看视频| 视频一区在线播放| 欧美亚州韩日在线看免费版国语版| 中文字幕 久热精品 视频在线 |