如何从Socket获取IP地址
我想获得一个绑定到receiveSock的IP地址。 我怎么才能得到它。
问题1:
ipEndReceive = new IPEndPoint(IPAddress.Any, receivePort); receiveSock = new Socket(AddressFamily.InterNetwork , SocketType.Stream, ProtocolType.Tcp); receiveSock.Bind(ipEndReceive);
当代码达到Bindfunction时。 发生错误
无效参数,错误代码:10022,消息:提供了无效参数
问题2:
ipEndReceive = new IPEndPoint(IPAddress.Parse("127.0.0.1"), receivePort); receiveSock = new Socket(AddressFamily.InterNetwork , SocketType.Stream, ProtocolType.Tcp); receiveSock.Bind(ipEndReceive); ErrorLog.WritetoErrorlog("\nRemote IP Address : " + ((IPEndPoint)receiveSock.RemoteEndPoint).Address.ToString()
当我尝试这个IP。 它向我显示了与上面相同的错误
首先,它看起来像是你想要的本地终点。 其次,当您指定IPAddress.Any
( 0.0.0.0
)时,您明确声明Socket
将绑定到没有特定接口。 每个IP地址只匹配一个接口。
var s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Bind(new IPEndPoint(IPAddress.Any, somePort)); Trace.WriteLine(s.LocalEndPoint); // should be what you're looking for
套接字已绑定,将用于接收连接。 它没有RemoteEndPoint
。 这应该非常清楚,因为Accept
方法返回一个新的Socket
对象,该对象表示两个端点(本地/远程)之间的连接。
注意:这是一个IPv4套接字( AddressFamily.InterNetwork
),所以不要尝试将其绑定到其他任何东西。
查看MSDN上的文档,您可以在那里了解有关典型Winsock编程的更多信息(因为Socket类只是一个Winsock包装器)。
- System.Runtime.InteropServices.COMException(0x80080005):使用CLSID检索组件的COM类工厂
- 在Visual Studio 2010中使用Resharper 6自动完成初始化程序
- 如何执行“nslookup主机服务器”
- c#堆栈队列组合
- Resolve ()是否按会话返回对象?
- 如何在WPF中启动说明Master-Detail(复合列表)对象数据绑定的最简单代码?
- 在数组中自动实现接口
- CA1001 Visual Studio 2012代码分析警告。 这是什么意思?
- C#中的快速订单统计树或哪种DS更有效,SortedList提供相同的function?