📄 win32socketserver.h
字号:
#ifndef UTILS_BASE_WIN32SOCKETSERVER_H_#define UTILS_BASE_WIN32SOCKETSERVER_H_#ifdef WIN32#include "messagequeue.h"#include "socketserver.h"#include "socketfactory.h"#include "socket.h"#include "asyncsocket.h"namespace utils_base {///////////////////////////////////////////////////////////////////////////////// Win32Socket///////////////////////////////////////////////////////////////////////////////class Win32Socket : public utils_base::AsyncSocket {public: Win32Socket(); virtual ~Win32Socket(); int Attach(SOCKET s); void SetTimeout(int ms); // AsyncSocket Interface virtual SocketAddress GetLocalAddress() const; virtual SocketAddress GetRemoteAddress() const; virtual int Bind(const SocketAddress& addr); virtual int Connect(const SocketAddress& addr); virtual int Send(const void *pv, size_t cb); virtual int SendTo(const void *pv, size_t cb, const SocketAddress& addr); virtual int Recv(void *pv, size_t cb); virtual int RecvFrom(void *pv, size_t cb, SocketAddress *paddr); virtual int Listen(int backlog); virtual Socket *Accept(SocketAddress *paddr); virtual int Close(); virtual int GetError() const; virtual void SetError(int error); virtual ConnState GetState() const; virtual int EstimateMTU(uint16* mtu); virtual int SetOption(Option opt, int value);private: bool Create(long events); void UpdateLastError(); int DoConnect(const sockaddr_in& addr); void OnSocketNotify(int event, int error); void OnDnsNotify(int ip, int error); sockaddr_in addr_; // address that we connected to (see DoConnect) SOCKET socket_; int error_; uint32 connect_time_; ConnState state_; bool signal_close_; class EventSink; friend class EventSink; EventSink * sink_; struct DnsLookup; DnsLookup * dns_;};///////////////////////////////////////////////////////////////////////////////// Win32SocketServer///////////////////////////////////////////////////////////////////////////////class Win32SocketServer : public SocketServer {public: Win32SocketServer(MessageQueue *message_queue); virtual ~Win32SocketServer(); // SocketServer Interface virtual Socket* CreateSocket(int type); virtual AsyncSocket* CreateAsyncSocket(int type); virtual bool Wait(int cms, bool process_io); virtual void WakeUp(); void Pump();private: void CreateDummyWindow(); MessageQueue *message_queue_; HWND hwnd_;};///////////////////////////////////////////////////////////////////////////////} // namespace utils_base#endif // WIN32#endif // UTILS_BASE_WIN32SOCKETSERVER_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -