unsafe int Send(byte [] buffer, int offset, int len) { if (secure || no_libc) { requestBroker.Write(requestId, buffer, offset, len); return(len); } int total = 0; while (total < len) { fixed(byte *ptr = buffer) { // 0x4000 no sigpipe int n = send((int)socket, ptr + total, (IntPtr)(len - total), 0x4000); if (n >= 0) { total += n; } else if (Marshal.GetLastWin32Error() != 4 /* EINTR */) { throw new IOException(); } } } return(total); }
int Send(byte [] buffer, int offset, int len) { #if MONO if (secure || no_libc) { #endif requestBroker.Write(requestId, buffer, offset, len); return(len); #if MONO } int total = 0; while (total < len) { fixed(byte *ptr = buffer) { // 0x4000 no sigpipe int n = send(socket, ptr + total, (IntPtr)(len - total), (IntPtr)0x4000); if (n >= 0) { total += n; } else { throw new IOException(); } } } return(total); #endif }