函数名
vtcp_connectex
声明
int WINAPI vtcp_connectex(VTCP_SOCKET socket,PSOCKADDR_IN sai,int sailen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
描述
连接服务端。
输入
VTCP_SOCKET socket: VTCP句柄,由vtcp_socket函数创建。
PSOCKADDR_IN sai: 连接目标地址结构。
int sailen: 连接目标地址结构大小,需要设置为 sizeof(SOCKADDR_IN)。
LPWSAOVERLAPPED lpOverlapped: 重叠I/O结构。
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine: 完成例程。
输出
无
返回值(错误码=0 成功)
ERROR_INVALID_HANDLE: VTCP句柄不正确。
ERROR_INVALID_STATE:
VTCP句柄状态不正确。
ERROR_INVALID_PARAMETER: 参数不正确。
ERROR_IO_PENDING:I/O被延迟。
其他错误参考windows
说明
当没有关联IOCP时,lpOverlapped->hEvent有效,则lpCompletionRoutine可以为NULL。
当没有关联IOCP时,lpCompletionRoutine = NULL,则lpOverlapped->hEvent必须有效。
当关联了IOCP时,lpOverlapped必须有效,而lpOverlapped->hEvent与lpCompletionRoutine被忽略。
参考
Windows完成端口编程模型(IOCP)。
connect
vtcp_iocp
typedef
void
(CALLBACK * LPWSAOVERLAPPED_COMPLETION_ROUTINE)(
IN
DWORD dwError,
IN
DWORD cbTransferred,
IN
LPWSAOVERLAPPED lpOverlapped,
IN
DWORD dwFlags
);
#define WSAOVERLAPPED
OVERLAPPED
typedef struct _OVERLAPPED * LPWSAOVERLAPPED;
typedef struct _OVERLAPPED {
ULONG_PTR
Internal;
ULONG_PTR
InternalHigh;
union
{
struct {
DWORD Offset;
DWORD OffsetHigh;
} DUMMYSTRUCTNAME;
PVOID Pointer;
}
DUMMYUNIONNAME;
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;