linux 中 C++ 中的 UDP Socket 编程
Posted
技术标签:
【中文标题】linux 中 C++ 中的 UDP Socket 编程【英文标题】:UDP Socket programming in C++ in linux 【发布时间】:2011-06-21 20:10:53 【问题描述】:我对套接字编程和 c++ 中的初学者-中级完全陌生。 我用 c++ 编写了一个代码,还用 java 编写了另一个应用程序。 java 程序将从 c++ 代码中获取数据,该代码在几秒钟内生成数据。我正在尝试使用套接字编程在这两者之间传输数据。我在这里找到了一些代码:Socket programming tutorial。我正在使用它的UDP java客户端。但是,对于 UDP 服务器,它只有 C 代码。我需要将此代码嵌入到我的 C++ 应用程序中。因此我需要它的 c++ 版本。谁能帮我这个?或给我一个链接,提供有关它的教程。反正C代码是:udpserver.c
【问题讨论】:
你应该能够(几乎)逐字接受......到目前为止你尝试过做什么? @Chris: 编译时出现此错误:udpserver.c: In function 'int main()': udpserver.c:48:64: error: invalid conversion from 'int*' to ' socklen_t*' udpserver.c:48:64: 错误:初始化'ssize_t recvfrom(int, void*, size_t, int, sockaddr*, socklen_t*)'的参数6 【参考方案1】:您必须将 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];
... 其他一切保持原样。
【讨论】:
我是初学者...我这样做了,我得到了这个错误:udpserver.c:19:9: error: expected '=', ',', ';', 'asm ' or 'attribute' before 'char' udpserver.c:41:9: error: 'addr_len' undeclared (first use in this function) udpserver.c:41:9: note: each undeclared identifier每个函数只报告一次以上是关于linux 中 C++ 中的 UDP Socket 编程的主要内容,如果未能解决你的问题,请参考以下文章