在Linux中使用C++进行UDP套接字编程

4
我完全不懂socket编程,而在C++方面则是初学者到中级水平。 我已经用C++编写了一段代码,并且还有另一个应用程序使用Java。Java程序将从生成数据的C++代码获取数据,该代码每秒钟生成一次数据。我正在尝试使用socket编程在这两个程序之间传输数据。我在这里找到了一些代码:Socket programming tutorial。我正在使用其中的UDP Java客户端。但是,对于UDP服务器,它只有C代码。我需要将此代码嵌入到我的C++应用程序中。因此,我需要它的C++版本。有人能帮助我吗?或者给我一个教程链接。无论如何,以下是C代码:udpserver.c

1
你应该能够(几乎)逐字地采取那个...你到目前为止尝试了什么? - Chris J
@Chris:编译时我遇到了这个错误:udpserver.c: 在函数‘int main()’中: udpserver.c:48:64: 错误:从‘int’到‘socklen_t’的转换无效 udpserver.c:48:64: 错误:初始化参数6时出错,应为‘ssize_t recvfrom(int, void*, size_t, int, sockaddr*, socklen_t*)’ - Hossein
1个回答

5

您必须将addr_len声明为socklen_t,而不是int。


也就是说,main函数中的前几行应该类似于:

int sock;
int bytes_read; // <- note how this is now on its own line!
socklen_t addr_len; // <- and this too, with a different type.
char recv_data[1024];

...保持其他一切不变。

(这段内容与IT技术无关,翻译已完成)

我是一个初学者... 我做了这个,但是出现了以下错误:udpserver.c:19:9: 错误:在‘char’之前预期‘=’, ‘,’, ‘;’, ‘asm’或‘__attribute__’ udpserver.c:41:9: 错误: ‘addr_len’在此函数中未声明(第一次使用) udpserver.c:41:9: 注意:每个未声明的标识符仅在其首次出现的函数中报告一次。 - Hossein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接