gpt4 book ai didi

c# - 以编程方式从网络接口(interface)发送数据

转载 作者:可可西里 更新时间:2023-11-01 11:37:07 24 4
gpt4 key购买 nike

我有一个端口查询应用程序,用于检查远程端口是打开还是阻塞。我想要做的是在进行端口检查时,能够选择本地机器上的哪个网络接口(interface)来发送流量。这可能吗?我该怎么做?

更新:

我已经添加了以下几行,但它仍然没有绑定(bind)

    string localip; 
localip = interfacesComboBox.Text;
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.ReceiveTimeout = 1000;
IPAddress myIP = IPAddress.Parse(localip);
socket.Bind(new IPEndPoint(myIP, 0));

最佳答案

    private ushort BindToNextAvail(Socket sock, params ushort[] portList)
{
foreach (ushort i in portList)
{
try
{
sock.Bind(new IPEndPoint(IPAddress.Any, i));
return (ushort)((IPEndPoint)sock.LocalEndPoint).Port;
}
catch
{
Logger.Instance().WriteLog(EventLogEntryType.Warning, "Unable to use port " + i.ToString());
}
}

return 0;
}

那是我的实时应用程序,所以它应该大致适合你。

以及该方法调用位置的示例:

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.ReceiveTimeout = 1000;

if (Bind(socket, 10000, 10001, 10002) == 0)
throw new SocketException(10049); // "Cannot assign requested address" exception

关于c# - 以编程方式从网络接口(interface)发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com