简单的UDP套接字代码,发送和接收消息

时间:2015-08-12 03:26:46

标签: c++ c sockets udp

我刚刚学习UDP套接字,这是我第一个涉及它的代码。我有两个程序来回发送和接收消息。我的问题是,似乎我必须在整个代码中多次声明我发送/接收的IP地址,因为它发生了变化,但我觉得有一种更好的方法可以在代码中手动更改inet_addr。从我的阅读看起来像sendto和recvfrom可能会有所帮助,但我不确定如何在这种情况下使用它们。如果有人能告诉我如何解决我的简单问题,我将非常感激!感谢

代码1:发送然后接收

$('#myForm').ajaxSubmit({
    headers: {
        "foo": "bar"
    }
});

代码2:接收然后发送

   <h1>Editing Video</h1>

<%= render 'form' %>

<br>
<%= link_to 'New Poster', new_poster_path %> | 
<%= link_to 'Show', @video %> |
<%= link_to 'Back', videos_path %>

2 个答案:

答案 0 :(得分:1)

如果使用函数recvfrom()

    ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
             struct sockaddr *src_addr, socklen_t *addrlen);

这个函数的作用是用sockaddr的结构填充它刚收到的数据包的IP和端口信息。例如,如果先发送的代码然后接收发送一个数据包到接收器,接收器应该能够用正确的值填充sin_addr和sin_port的结构值。然后,您可以使用此信息调用sendto(),以便将其发送到正确的计算机。

这是这些功能的手册页:

https://linux.die.net/man/2/recvfrom

https://linux.die.net/man/2/sendto

答案 1 :(得分:-1)

尝试使用:

inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr)

127.0.0.1是环回IP。该地址用于建立与同一台机器的IP连接,这似乎就是您的情况。

可以找到解决问题的详细方法here