Udp套接字处理

时间:2012-02-05 12:59:48

标签: delphi udp delphi-7

我想使用UDP Socket简单地发送音频流。我的问题是我无法使其工作,我认为使用TCP IP会更简单。

我做了什么我在我的表单上下载了一个UDPSocket组件,而对于我使用此代码的服务器部分

  with udpServer do
  begin
    LocalHost := '127.0.0.1';
    LocalPort := '5002';
    Open();
    Active := True;
  end;

对于客户端应用程序:

   with udpClient do
      begin
        RemoteHost := '192.0.168.100'; //my local address
        RemotePort := '5002';
        Open();
        Active := True;
      end;

问题是我没有收到任何东西。我做错了什么我没有任何可以阻止连接的第三方软件。

我没有找到任何合适的使用此组件的示例,我们将非常感谢任何灵感来源。

2 个答案:

答案 0 :(得分:3)

您将服务器和客户端连接在同一IP上。

通常,如果将服务器应用程序IP地址设置为0.0.0.0,它将绑定到给定端口上的任何可用IP地址,包括127.0.0.1。

然后客户端必须连接到其中一个绑定的IP。相反,您让服务器侦听127.0.0.1,客户端连接到192.0.168.100。

不要被“LocalHost”属性名称欺骗。这里的“本地”只是意味着你必须设置一个“本地”IP,一个分配给本地机器的IP,而不是一台“远程”(另一台机器),而客户端当然会连接到“远程”IP,服务器的那个。

当且仅当您希望服务器仅可用于本地应用程序时,

127.0.0.1是一个不错的选择,因为该IP范围仅限于同一台计算机。如果要在机器外部使其可用,则必须将其绑定到有效的IP。

无论您遇到什么问题,WiresharkMicrosoft Network Monitor等工具对于了解正在发生的事情非常有用。

答案 1 :(得分:1)

您将服务器绑定到127.0.0.1,因此它只接受专门连接到127.0.0.1的客户端。您的客户正在连接到192.0.168.100(也许您的意思是192.168.0.100?)。

您需要将服务器绑定到客户端实际连接的IP,或者将其绑定到0.0.0.0以接受任何本地IP上的连接。

尽管UDP是无连接的,但同样的规则同时适用于UDP和TCP,因为它适用于它们共享的低级IP路由层。