c# - 如何使用给定端口查找未知 IP
问题描述
我在我们的网络中使用树莓派作为服务器,IP:172.20.XX/16
计划是向端口发送广播消息15555
。服务器将收到消息并向我发送他的eth0-IP。
由于我在网络方面不是最好的,所以我在制作一个将 IP 发送到广播公司的脚本时遇到了问题,尤其是当服务器在端口上接收到任何东西时让这个脚本得到执行15555
我已经阅读了有关命令“nc”的一些内容,但我真的不明白这是否解决了我的问题:
https://stackoverflow.com/a/4739260/11397900
所以目前我有2个脚本:
脚本 1 包含
#!/bin/bash
while :
do
nc -k -l 15555 > sendIP.sh
sleep 1
done
脚本 2 称为 sendIP 并包含 atm
#!/bin/bash
echo "Success"
最后但并非最不重要的一点是,我发送广播的 C#-Code 是这样的:
private static string getServerIP(int port)
{
string IPString = String.Empty;
IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("172.20.255.255"), port);
byte[] messageInbytes = Encoding.ASCII.GetBytes("Hallo");
UdpClient udpClient = new UdpClient();
udpClient.Send(messageInbytes, messageInbytes.Length, iPEndPoint);
udpClient.Client.ReceiveTimeout = 1000;
while (true)
{
try
{
var recvBuffer = udpClient.Receive(ref iPEndPoint);
break;
}
catch
{
}
}
return iPEndPoint.Address.ToString();
}
预期是,在树莓上,控制台会出现“Success”,c#-程序结束,但实际上程序不会得到响应
解决方案
推荐阅读
- python - 无法理解 python sankey plot,以及源/目标如何工作
- sql-server - 如何在 Visual Studio 中为桌面应用程序创建带有水晶报表或 ms-reports 的设置
- javascript - JavaScript 中的传播操作符有什么意义,尤其是在这个例子中?
- angular - 重命名 Angular 指令,例如 *ngFor 或自定义指令
- c# - Angular 反应式表单自定义远程验证
- ruby-on-rails - PG::ConnectionBad: 无法连接到服务器:没有这样的文件或目录 | Rails 6 无法连接到 AWS Elastic Beanstalk RDS
- pandas - 根据月初和月底过滤数据
- sql - SQL 更新多个表中的值
- laravel - Laravel 护照登录 CSRF 令牌在 Postman 中不匹配
- javascript - TS with Redux Slices: valueService.js:205 Uncaught TypeError: Cannot assign to read only property 'dis' of object '#