public void Connect(string sendInterface, int?sendBufferSize, PgmSendWindowSize?windowSize) { lock (syncRoot) { if (socket != null) { socket.Close(); socket = null; } socket = new PgmSocket(); int?nullable = sendBufferSize; socket.SendBufferSize = nullable.HasValue ? nullable.GetValueOrDefault() : 0x100000; if (!string.IsNullOrEmpty(sendInterface)) { IPAddress interfaceIpAddress = IPAddress.Parse(sendInterface); this.socket.SetSendInterface(interfaceIpAddress); } socket.Bind(new IPEndPoint(IPAddress.Any, 50001)); if (!windowSize.HasValue) { windowSize = new PgmSendWindowSize(DefaultRateKbitsPerSec, DefaultWindowSizeInMSecs, DefaultWindowSizeInBytes); } socket.SetSendWindowSize(windowSize.Value); socket.Connect(EndPoint); } }
public void SetSendWindowSize(PgmSendWindowSize sendWindowSize) { byte[] bytes = sendWindowSize.GetBytes(); SetPgmSocketOption(PgmSocketOptions.RM_RATE_WINDOW_SIZE, bytes); }