?? tcpsocket.h
字號:
// TcpSocket.h: interface for the CTcpSocket class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TCPSOCKET_H__5D096D00_9B89_11D3_8AB6_5254AB104A0B__INCLUDED_)
#define AFX_TCPSOCKET_H__5D096D00_9B89_11D3_8AB6_5254AB104A0B__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define WM_TCP_SOCKET_ACCEPT (WM_USER + 0x200)
#define WM_TCP_SOCKET_CONNECT (WM_USER + 0x201)
#define WM_TCP_SOCKET_DATA (WM_USER + 0x202)
#define WM_TCP_SOCKET_CLOSE (WM_USER + 0x203)
#define TCP_DEFAULT_PORT 10000
class CTcpSocket
{
public:
CTcpSocket();
virtual ~CTcpSocket();
BOOL Call(ULONG uPeerIP, HWND hWnd, int iPort = 0);
ULONG Accept(SOCKET socketListen, LPARAM lParam, HWND hWnd, int iPort = 0);
void Hangup();
BOOL Write(char * pData, int iLength);
void SetPDA();
void SetPDAAudio();
ULONG OnConnect(LPARAM lParam);
void OnClose();
inline SOCKET GetSocket() { return m_socket; }
inline ULONG GetPeerIP() { return m_uPeerIP; }
protected:
SOCKET m_socket; // the socket for the connection
ULONG m_uPeerIP; // IP address of the peer connection
CString m_strPeerName; // IP address of the peer connection in dotted string (for read)
int m_iPort;
BOOL m_bPDA;
BOOL m_bPDA_Audio;
HANDLE m_hIOThread; // handle to thread that takes care of network events
HANDLE m_hNetEvent; // handle to event signaled when a network event occurs
HANDLE m_hOutputEvent; // handle to event signaled when output is ready to be shipped
HANDLE m_hQuitEvent;
WSAEVENT m_eventArray[3]; // The array of events which the I/O thread is currently waiting on.
BOOL m_bWriteOk; // Are we waiting for an FD_WRITE?
CList<WSABUF *, WSABUF *> m_sendQueue; // Queue used to hold send buffers
CCriticalSection m_critical;
protected:
BOOL Prepare();
void Unprepare();
public:
static BOOL Startup();
static void Shutdown();
static CString GetHostName();
static CString GetProtocols();
static CString GetProviders();
static ULONG Name2IP(CString strName);
static CString IP2Name(ULONG uIP);
static ULONG GetLocalIP();
static DWORD WINAPI ThreadFunc(LPVOID pParam);
public:
BOOL HandleNetworkEvent();
BOOL HandleOutputEvent();
void CleanUp();
inline WSAEVENT * GetEventArray() { return m_eventArray; }
public:
static LPWSAPROTOCOL_INFO m_pProtocolsInfo;
static LPWSAPROTOCOL_INFO m_pTcpInfo;
int m_iPeerPort;
};
#endif // !defined(AFX_TCPSOCKET_H__5D096D00_9B89_11D3_8AB6_5254AB104A0B__INCLUDED_)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -