首页 / C# / 如何在C#中连接本地Socket?
如何在C#中连接本地Socket?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在C#中连接本地Socket?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1725字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试调整我找到的用于连接Dropbox守护程序的python代码:
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:没有这样的主机是已知的.我假设这是因为cmdSocket和ifaceSocket是路径,而不是IP地址. Python似乎自动处理这个问题,我该如何在C#中执行此操作?这是我第一次涉及套接字编程,所以请指出任何明显的错误.
解决方法:
您需要使用Mono.Posix.dll中的Mono.Unix.UnixEndPoint而不是IPEndPoint.其他一切都是一样的.查看XSP如何使用它的示例here.
内容总结
以上是互联网集市为您收集整理的如何在C#中连接本地Socket?全部内容,希望文章能够帮你解决如何在C#中连接本地Socket?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。