13 SOCKET socket, LPCTSTR lpctszAcceptIPAddress, USHORT wAcceptPort)
18 _tcslen (lpctszAcceptIPAddress) *
sizeof (TCHAR));
25 int ret = ::send (
_socket, (PCHAR)lpvBuf, (
int)dwSize, 0);
36 DWORD dwRemain = dwSize;
48 PCHAR currentPos = (PCHAR)lpvBuf + (dwSize - dwRemain);
49 DataBuf.len = dwRemain;
50 DataBuf.buf = currentPos;
52 rc = WSARecv (
_socket, &DataBuf, 1, &dwRecvBytes, &dwFlags,
54 if ((rc == SOCKET_ERROR) && (WSA_IO_PENDING !=
GetErrNo ()))
62 if (rc == WSA_WAIT_FAILED)
85 dwRemain -= dwRecvBytes;
86 ret = dwSize - dwRemain;
95 ret = (INT)dwRecvBytes;
TCP通信に関するWindowsAPIを集約したクラス
DWORD APIENTRY GetErrNo() const
WinSock API呼び出し時にエラーとなった時、 エラーの詳細を返します。
SOCKET _socket
このクラスで管理するソケットオブジェクト
APIENTRY TcpConnector()=delete
INT APIENTRY Recv(LPVOID lpvBuf, DWORD dwSize, BOOL isBlocking=TRUE)
TCP受信処理
BOOL CancelRecv()
Recv()待機中のキャンセル処理
WSAOVERLAPPED _RecvOverlapped
TCHAR _tszAcceptedIPAddress[INET_ADDRSTRLEN]
INT APIENTRY Send(LPVOID lpvBuf, DWORD dwSize) const
TCP送信処理