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

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

?? socketft.h

?? 應用非對稱密鑰系統RSA密碼系統進行數據簽名的代碼
?? 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一区二区三区免费野_久草精品视频
亚洲成a人v欧美综合天堂| 欧美电视剧免费观看| 日本在线不卡视频| 国产精品色眯眯| 欧美一区二区久久久| www.久久精品| 国产麻豆视频一区| 日韩va欧美va亚洲va久久| 亚洲欧美国产三级| 在线91免费看| 欧洲精品一区二区三区在线观看| 成人免费毛片a| 国产成人在线电影| 毛片av一区二区| 日韩成人免费看| 亚洲chinese男男1069| 亚洲欧美韩国综合色| 亚洲人成精品久久久久| 久久久久国产精品麻豆ai换脸 | 亚洲成av人片| 免费看欧美女人艹b| 国产主播一区二区| 91年精品国产| 91精品午夜视频| 2024国产精品视频| 综合分类小说区另类春色亚洲小说欧美| 亚洲三级久久久| 日本欧洲一区二区| 成人午夜av影视| 欧美久久久久久蜜桃| 久久久久久久免费视频了| 国产精品国产三级国产aⅴ入口| 伊人性伊人情综合网| 男人操女人的视频在线观看欧美| 国产乱色国产精品免费视频| 99精品1区2区| 精品国产青草久久久久福利| 亚洲欧洲www| 免费国产亚洲视频| 色狠狠一区二区| 久久久噜噜噜久久人人看| 一区二区三区影院| 国产精品18久久久久久vr| 色香蕉久久蜜桃| 久久―日本道色综合久久| 一区二区在线免费| 国产98色在线|日韩| 欧美裸体bbwbbwbbw| 国产精品欧美一级免费| 久久99久久99| 欧美丰满美乳xxx高潮www| 国产精品久久三| 国产毛片精品国产一区二区三区| 欧美另类z0zxhd电影| 最新不卡av在线| 国产精品一区二区无线| 5566中文字幕一区二区电影| 亚洲区小说区图片区qvod| 国产一区91精品张津瑜| 日韩欧美国产一区在线观看| 亚洲一区二区成人在线观看| 国产乱对白刺激视频不卡| 欧美日韩国产综合一区二区| 国产精品丝袜91| 国产乱码精品一品二品| 精品国产乱码91久久久久久网站| 亚洲在线视频免费观看| 国产一区二区三区免费| 日韩一区二区高清| 日韩一区欧美二区| 欧美精品日韩一区| 亚洲在线一区二区三区| 成人av在线影院| 久久综合成人精品亚洲另类欧美| 精品在线观看视频| 欧美第一区第二区| 国产剧情一区在线| 久久久美女毛片| 成人sese在线| 国产目拍亚洲精品99久久精品| 国产成人鲁色资源国产91色综| 久久一留热品黄| 国产精品 欧美精品| 国产精品国产三级国产aⅴ原创| 91视视频在线观看入口直接观看www| 欧美国产成人精品| 99re这里只有精品视频首页| 亚洲免费看黄网站| 欧美偷拍一区二区| 亚洲成人动漫在线免费观看| 91精品国产免费| 精品一区二区三区久久久| 久久蜜桃一区二区| 91污在线观看| 亚洲欧美日韩一区二区三区在线观看 | 欧美大片在线观看| 国产在线国偷精品产拍免费yy| 久久综合视频网| 成人黄色小视频| 亚洲综合色视频| 欧美成人一区二区三区片免费 | 欧美人狂配大交3d怪物一区| 另类小说图片综合网| 久久蜜臀精品av| 一本一道波多野结衣一区二区| 自拍av一区二区三区| 欧美日韩精品一区二区三区| 美女爽到高潮91| 国产精品久久久久久久久免费相片 | 色偷偷88欧美精品久久久| 亚洲一区二区av在线| 精品免费国产一区二区三区四区| 成人精品亚洲人成在线| 日精品一区二区三区| 久久久精品国产免费观看同学| 91美女在线看| 韩国毛片一区二区三区| 一区二区成人在线视频| wwwwww.欧美系列| 欧美午夜在线观看| 国产成人午夜精品影院观看视频| 亚洲国产你懂的| 国产精品网友自拍| 欧美不卡一区二区| 欧洲av在线精品| 99国内精品久久| 国产成人午夜视频| 加勒比av一区二区| 偷窥少妇高潮呻吟av久久免费| 成人免费在线播放视频| 精品日韩在线观看| 91精品国产一区二区| 91黄色激情网站| 成人福利视频网站| 紧缚奴在线一区二区三区| 日韩在线观看一区二区| 亚洲综合一二三区| 亚洲男同性恋视频| 国产亚洲成av人在线观看导航| 91精品国产免费| 91精品国产一区二区| 欧美日韩一级片在线观看| 色综合婷婷久久| av电影天堂一区二区在线观看| 国产一区二区三区蝌蚪| 黄色小说综合网站| 蜜臀av一区二区三区| 日本亚洲天堂网| 天堂在线一区二区| 丝袜亚洲另类欧美| 日韩电影一区二区三区四区| 亚洲成av人在线观看| 五月天欧美精品| 丝袜诱惑亚洲看片| 麻豆成人久久精品二区三区小说| 日韩精品一二区| 麻豆国产一区二区| 精品无人区卡一卡二卡三乱码免费卡| 日一区二区三区| 免费成人在线视频观看| 青椒成人免费视频| 美女网站在线免费欧美精品| 久久99久久精品欧美| 激情图片小说一区| 国产成人在线电影| 91免费观看视频| 欧美精品 国产精品| 欧美一区二区三区在线观看| 亚洲色图视频网| 亚洲一区二区三区四区的| 亚洲一区二区欧美日韩| 免费成人结看片| 国产一区久久久| 99国产精品99久久久久久| 欧美在线一区二区| 日韩视频免费观看高清在线视频| 久久综合色天天久久综合图片| 欧美高清在线一区二区| 一区二区三区91| 精品一区精品二区高清| 成人高清视频在线| 欧美精品v日韩精品v韩国精品v| 久久久久久免费| 一二三四区精品视频| 蜜臀av一区二区在线观看| 99天天综合性| 日韩亚洲欧美一区二区三区| 欧美高清在线一区二区| 亚洲第一激情av| 丁香天五香天堂综合| 欧美日韩国产首页在线观看| 日韩视频在线一区二区| 欧美国产国产综合| 日本91福利区| 91蜜桃网址入口| 国产亚洲精品超碰| 亚洲妇女屁股眼交7| 不卡av免费在线观看| 日韩一区二区不卡| 艳妇臀荡乳欲伦亚洲一区|