我有一个应用程序,我希望在Windows上使用.我正在使用AF_UNIX family un windows.我想知道AF_UNIX系列在Windows中可用.如果没有那么AF_UNIX有替代品吗?
谢谢Arpit
linux windows network-programming linux-kernel windows-networking
我在Linux上的.NET Core中创建了一个unix套接字(Ubuntu 16.04):
var unixSocket = "/var/run/mysqld/mysqld.sock";
var socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP);
Run Code Online (Sandbox Code Playgroud)
现在我如何连接插座?
.NET Core API列出了各种Socket.Connect选项,但除了第一个处理IP地址之外的所有选项:
public void Connect(EndPoint remoteEP)
public void Connect(IPAddress address, int port)
public void Connect(IPAddress[] addresses, int port)
public void Connect(string host, int port)
Run Code Online (Sandbox Code Playgroud)
该System.Net API定义DNSEndpoint
和IPEndpoint
,但我似乎无法找到一个UnixEndpoint
或同级传递给Socket.Connect(EndPoint remoteEP)
我开发了简单的异步服务器,它可以监听发送一些小数据的unix socket和sync客户端.从客户端发送数据到服务器接收数据的时刻之间的时间是完全随机的,从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();
}
}
Run Code Online (Sandbox Code Playgroud)
在客户端:
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);
Run Code Online (Sandbox Code Playgroud)
从webservice方法(通过xsp2运行)调用将数据发送到服务器的方法.