我需要快速实现一个非常小的C或C++ TCP服务器/客户端解决方案.这只是简单地将字节数组从一台计算机传输到另一台计算机 - 不需要是可扩展的/过度复杂的.越简单越好.如果可以,快速而肮脏.
我尝试使用本教程中的代码,但我无法在Linux中使用g ++进行构建:http://www.linuxhowtos.org/C_C++/socket.htm
如果可能的话,我想避免使用第三方库,因为我运行它的系统非常有限.这必须是C或C++,因为现有的应用程序已经实现.
感谢emg-2的回答,我设法使用以下步骤使上述代码示例与C++兼容:
将这些标头添加到客户端和服务器:
#include#include #include
在server.c中,将clilen的类型更改为socklen_t.
int sockfd, newsockfd, portno/*, clilen*/; socklen_t clilen;
在client.c中,更改以下行:
if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { ... }
至:
if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
Bill the Liz.. 42
我过去曾使用过Beej的网络编程指南.它是C语言,而不是C++,但这些例子很好.直接转到第6节,了解简单的客户端和服务器示例程序.
我过去曾使用过Beej的网络编程指南.它是C语言,而不是C++,但这些例子很好.直接转到第6节,了解简单的客户端和服务器示例程序.
如果代码应该简单,那么您可能要求基于传统BSD套接字的C示例.boost::asio
对于短而简单的"hello world"示例,类似的解决方案非常复杂.
要编译您提到的示例,您必须进行简单的修复,因为您是在C++编译器下编译的.我指的是以下文件:
http://www.linuxhowtos.org/data/6/server.c
http://www.linuxhowtos.org/data/6/client.c
来自:http:// www. linuxhowtos.org/C_C++/socket.htm
在以下文件中添加以下内容:
#include#include #include
在client.c中,更改行:
if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { ... }
至:
if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0) { ... }
正如您在C++中看到的那样,需要进行显式转换.
试试boost :: asio lib(http://www.boost.org/doc/libs/1_36_0/doc/html/boost_asio.html)它有很多例子.