我开发了简单的asynchronous服务器,它侦听发送一些小数据的unix套接字和同步客户端。 从客户端发送数据到服务器收到数据之间的时间是完全随机的,从1到9秒。 我不知道为什么是这个原因? 服务器的实现如msdn示例中所示(使用beginReceive): http : //msdn.microsoft.com/en-us/library/fx6588te.aspx
EndPoint ep = new UnixEndPoint(_fileName); _socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP); try { _socket.Bind(ep); _socket.Listen(_maxConnectionsInQuee); while(true) { done.Reset(); _socket.BeginAccept(new AsyncCallback(AcceptCallback), null); done.WaitOne(); } }
而在客户端:
EndPoint ep = new UnixEndPoint(_fileName); _socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP); _socket.Connect(ep); byte[] bytes = Encoding.UTF8.GetBytes(message); _socket.Send(bytes);
从Web服务方法(通过xsp2运行)调用将数据发送到服务器的方法。
它发生在单声道Unix套接字确定:)。 我有一些与Mono.Unix和unix域套接字完全无关的线程问题。 感谢你的帮助。
这很可能是由于Nagle算法延迟发送数据直到超时或缓冲区已满。 您可以通过设置NoDelay选项来禁用此功能。