Nic*_*ton 41 c++ tcp client-server
我需要快速实现一个非常小的C或C++ TCP服务器/客户端解决方案.这只是简单地将字节数组从一台计算机传输到另一台计算机 - 不需要是可扩展的/过度复杂的.越简单越好.如果可以,快速而肮脏.
我尝试使用本教程中的代码,但我无法在Linux中使用g ++进行构建:http://www.linuxhowtos.org/C_C++/socket.htm
如果可能的话,我想避免使用第三方库,因为我运行它的系统非常有限.这必须是C或C++,因为现有的应用程序已经实现.
感谢emg-2的回答,我设法使用以下步骤使上述代码示例与C++兼容:
将这些标头添加到客户端和服务器:
#include <cstdlib>
#include <cstring>
#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)
在server.c中,将clilen的类型更改为socklen_t.
int sockfd, newsockfd, portno/*, clilen*/;
socklen_t clilen;
Run Code Online (Sandbox Code Playgroud)
在client.c中,更改以下行:
if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { ... }
Run Code Online (Sandbox Code Playgroud)
至:
if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
Run Code Online (Sandbox Code Playgroud)
小智 13
如果代码应该简单,那么您可能要求基于传统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 <cstdlib>
#include <cstring>
#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)在client.c中,更改行:
if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)
{ ... }
Run Code Online (Sandbox Code Playgroud)
至:
if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
{ ... }
Run Code Online (Sandbox Code Playgroud)正如您在C++中看到的那样,需要进行显式转换.