函数名

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_PENDINGI/O被延迟。

 

其他错误参考windows

 

说明

当没有关联IOCP,lpOverlapped->hEvent有效,则lpCompletionRoutine可以为NULL

当没有关联IOCP,lpCompletionRoutine = NULL,则lpOverlapped->hEvent必须有效。

当关联了IOCP时,lpOverlapped必须有效,而lpOverlapped->hEventlpCompletionRoutine被忽略。

 

参考

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;