Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 发现TCP/IP套接字?_Sockets_Udp_Tcp Ip - Fatal编程技术网

Sockets 发现TCP/IP套接字?

Sockets 发现TCP/IP套接字?,sockets,udp,tcp-ip,Sockets,Udp,Tcp Ip,为此,我使用Objective-C和Java,但我认为问题与语言无关 我有一个iOS客户端,它通过TCP/IP与Java服务器通信。现在我需要告诉至少一方另一方的IP地址。是否有一种标准的方法可以“发现”IP地址(从一端或另一端) 此外,切换到UDP将如何影响答案?有许多协议用于发现网络上的其他设备/服务器。iOS领域中最常用的一个是“你好”。看看苹果的示例应用程序 是否有一种标准的方法可以“发现”IP地址(从一端或另一端) 是的,它被称为“端口嗅探”,并且肯定会给你带来麻烦,因为这是一种常见的

为此,我使用Objective-C和Java,但我认为问题与语言无关

我有一个iOS客户端,它通过TCP/IP与Java服务器通信。现在我需要告诉至少一方另一方的IP地址。是否有一种标准的方法可以“发现”IP地址(从一端或另一端)


此外,切换到UDP将如何影响答案?

有许多协议用于发现网络上的其他设备/服务器。iOS领域中最常用的一个是“你好”。看看苹果的示例应用程序

是否有一种标准的方法可以“发现”IP地址(从一端或另一端)

是的,它被称为“端口嗅探”,并且肯定会给你带来麻烦,因为这是一种常见的攻击

您只需尝试一个范围内的所有IP地址。许多防火墙产品会认为这是一个“入侵”尝试,并用入侵检测软件登录你。 我们几乎从未“发现”过地址


这就是“域名”的用途。

为什么服务器不能有一个众所周知的DNS名称?

谢谢@s.Lott。也许我把问题说得太狭隘了。我想这样做的原因是我有一个iOS应用程序,我想连接到它旁边的计算机上的服务器。我不能使用域名,因为我不能要求桌面计算机用户确保他/她的计算机对域名做出响应。@Yar:“就在它旁边”在互联网上没有任何意义。连通性并非微不足道。不要试图让它变得琐碎——这样做会导致各种不必要的活动。桌面计算机用户必须知道其计算机的IP地址或能够找到它。否则,机器之间的整个对话都不可信。请仔细阅读“中间人攻击”。如果您不太小心,可能会造成安全灾难。谢谢,虽然我知道中间人攻击,但IP欺骗是用于执行这些攻击的技术之一。因此,让用户在iOS客户端上输入服务器的IP地址很难“解决”安全问题。但无论如何,我真正想要的是这样的东西,这是做DNS发现的一种方式。举例来说,安全问题的处理方法与蓝牙配对相同。@Yar:让用户输入服务器的IP地址,使用户成为安全解决方案的一部分。事实上,它确实“解决”了这个问题。安全是人们积极“做”的事情。除了检查,信任还来自哪里?和所有握手配对技巧一样。蓝牙、SSL等@S.洛特,说得好,无论如何,最初的问题陈述得很糟糕。感谢您一如既往地抽出时间。虽然我可以在“服务器”上运行一些软件,但我无法配置其DNS(或其任何其他方面)。这两台机器将在同一子网上。如果它们在同一子网上,那么简单的UDP广播通常就足够了。让客户端向服务器正在侦听的特定UDP端口上的子网广播地址发送广播。当服务器接收到广播时,它可以使用其TCP IP/端口直接回复广播客户端。谢谢@Remy。。。现在我必须弄清楚“简单的UDP广播”是什么意思。如果您知道任何链接,请告诉我。要获取子网的广播IP,请使用子网屏蔽客户端的IPv4地址,然后附加子网掩码的倒数。换句话说:
broadcast\u addr=(ip地址和子网掩码)^subnet\u掩码。例如,如果客户端的LAN IP为192.168.0.1,子网掩码为255.255.255.0,则子网的广播IP为192.168.0.255。一旦你有了它,你就可以向这个IP发送一个普通的UDP数据包,包含你想要的任何内容。如果您的UDP侦听服务器绑定到同一子网上的IP,那么它可以通过正常的读取操作接收UDP数据包。谢谢Darron,我想知道是否有可能让Java应用程序作为“你好”发现服务?哇,这是一个完整的世界。迷人的。