Я пытаюсь адаптировать этот код Python, который я нашел для подключения к демону Dropbox:
def connect(self, cmd_socket="~/.dropbox/command_socket", iface_socket="~/.dropbox/iface_socket"):
"Connects to the Dropbox command_socket, returns True if it was successfull."
self.iface_sck = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.sck = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
self.sck.connect(os.path.expanduser(cmd_socket)) # try to connect
self.iface_sck.connect(os.path.expanduser(iface_socket))
except:
self.connected = False
return False
else: # went smooth
self.connected = True
return True
Вот что у меня есть:
public bool Connect (int port) {
return Connect ("~/.dropbox/command_socket", "~/.dropbox/iface_socket",
port);
}
public bool Connect (string cmdSocket, string ifaceSocket, int port)
{
IfaceSocket = new Socket (AddressFamily.Unix, SocketType.Stream,
ProtocolType.IP);
CmdSocket = new Socket (AddressFamily.Unix, SocketType.Stream,
ProtocolType.IP);
try {
// ExpandUser replaces a leading "/~" with the user's home directory
IPAddress [] CmdIPs = Dns.GetHostAddresses (ExpandUser (cmdSocket));
CmdSocket.Connect (CmdIPs [0], port);
IPAddress [] IfaceIPs = Dns.GetHostAddresses (ExpandUser (ifaceSocket));
IfaceSocket.Connect (IfaceIPs [0], port);
} catch (Exception e) {
// Debug
Console.WriteLine (e);
Connected = false;
return false;
}
Connected = true;
return true;
}
Это прекрасно компилируется, но когда я пытаюсь запустить его, я получаю System.Net.Sockets.SocketException: No such host is known
. Я предполагаю, что это потому, что cmdSocket
и ifaceSocket
являются путями, а не IP-адресами. Python, кажется, обрабатывает это автоматически, как мне сделать это в C #? Это мой первый опыт программирования сокетов, поэтому, пожалуйста, укажите на любые очевидные ошибки.