2013-03-15 185 views
2

我需要连接到端口500并打印出来的数据。有人能指引我朝着正确的方向吗?也许一个样本程序..收听UDP端口

错过了一部分..使用升压ASIO ..

我用C/C++用下面的代码:

int z; 
    struct sockaddr_in portList; 
    int len_inet; 
    int s; 
    char dgram[512]; 
    time_t td; 
    struct tm tm; 
    s = socket(AF_INET,SOCK_DGRAM,0); 
    if (s == -1) { 
    strerror(errno); 
    } 
    memset(&portList,0,sizeof portList); 
    portList.sin_family = AF_INET; 
    portList.sin_port = htons(500); 
    portList.sin_addr.s_addr = inet_addr("127.0.0.1"); 

    if (portList.sin_addr.s_addr == INADDR_NONE) { 
    strerror(errno); 
    } 
    len_inet = sizeof portList; 

    z = bind(s, (struct sockaddr *)&portList, len_inet); 
    if (z == -1) { 
    strerror(errno); 
    } 

    for (;;) { 
    z = recv(s, dgram, sizeof dgram, 0); 
    if (z < 0) { 
     strerror(errno); 
    } 
    std::cout << dgram << std::endl; 
    } 

但我得到的是垃圾值一样:

����҉ 

我做错了什么?

+4

谷歌 “C++ UDP教程”? – NPE 2013-03-15 12:15:36

+3

[你有什么尝试?](http://mattgemmell.com/2008/12/08/what-have-you-tried/)另外请注意,1024以下的端口是有特权的,可能需要你运行你的程序作为管理员或根。 – 2013-03-15 12:16:22

+1

欢迎!请花几分钟阅读[faq](http://stackoverflow.com/faq)。如果你全部阅读,你会得到一个徽章(c: – 2013-03-15 12:17:00

回答

-4

看beej指南Socket编程

http://beej.us/guide/bgnet/

+2

[仅限链接回答](http://meta.stackexchange.com/a/8259/148504)被认为是可怜的形式dd一些更多的细节? – 2013-03-15 16:11:27

+1

@Pradheep,这是一个荒谬的答案。你是在告诉他阅读一个完整的在线网络书吗?部分以及与问题的相关性? – enthusiasticgeek 2013-04-18 22:14:45

+0

@enthusiasticgeek我提供了答案,当他问的问题更加开放。如果我记得正确的话,我应该如何编写一个udp服务器来监听端口500.因此,最简单的答案就是参考指南。他后来添加了代码。一个建议“好奇而不是评判” – Pradheep 2013-04-19 05:40:26