def perform_sendall(act, overlapped): wsabuf = WSABUF() wsabuf.buf = c_char_p(act.buff[act.sent:]) wsabuf.len = len(act.buff)-act.sent nbytes = c_ulong() act.flags = wsabuf, nbytes return WSASend( act.sock._fd.fileno(), # SOCKET s byref(wsabuf), # LPWSABUF lpBuffers 1, # DWORD dwBufferCount byref(nbytes), # LPDWORD lpNumberOfBytesSent 0, # DWORD dwFlags overlapped, # LPWSAOVERLAPPED lpOverlapped None # LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ), nbytes
def perform_recv(act, overlapped): wsabuf = WSABUF() buf = create_string_buffer(act.len) wsabuf.buf = cast(buf, c_char_p) wsabuf.len = act.len nbytes = c_ulong(0) flags = c_ulong(0) act.flags = buf rc = WSARecv( act.sock._fd.fileno(), # SOCKET s byref(wsabuf), # LPWSABUF lpBuffers 1, # DWORD dwBufferCount byref(nbytes), # LPDWORD lpNumberOfBytesRecvd byref(flags), # LPDWORD lpFlags overlapped, # LPWSAOVERLAPPED lpOverlapped None # LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ) return rc, nbytes.value