什么是简单的C或C++;TCP服务器和客户端示例? 我需要快速实现一个非常小的C或C++ TCP服务器/客户端解决方案。这只是简单地将字节数组从一台计算机传输到另一台计算机,不需要可扩展/过于复杂。越简单越好。如果可以的话,快一点,脏一点

什么是简单的C或C++;TCP服务器和客户端示例? 我需要快速实现一个非常小的C或C++ TCP服务器/客户端解决方案。这只是简单地将字节数组从一台计算机传输到另一台计算机,不需要可扩展/过于复杂。越简单越好。如果可以的话,快一点,脏一点,c++,tcp,client-server,C++,Tcp,Client Server,我尝试使用本教程中的代码,但无法在Linux中使用g++进行构建: 如果可能的话,我希望避免使用第三方库,因为我运行此功能的系统受到了很大的限制。这必须是C或C++,因为已有的应用程序已经实现。 由于 EMG-2 的回答,我设法使上述代码示例与C++兼容,使用以下步骤: 将以下标题添加到客户端和服务器: #include <cstdlib> #include <cstring> #include <unistd.h> 在中,更改以下行: if (connec

我尝试使用本教程中的代码,但无法在Linux中使用g++进行构建:

如果可能的话,我希望避免使用第三方库,因为我运行此功能的系统受到了很大的限制。这必须是C或C++,因为已有的应用程序已经实现。

由于<强> EMG-2 <强>的回答,我设法使上述代码示例与C++兼容,使用以下步骤:

将以下标题添加到客户端和服务器:

#include <cstdlib>
#include <cstring>
#include <unistd.h>
在中,更改以下行:

if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { ... }
if(connect(sockfd,&serv_addr,sizeof(serv_addr))<0{…}
致:

if(connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr))<0)

试试boost::asio lib(),它有很多例子。

我过去用过。是C,不是C++,但是例子不错。直接转到以获取简单的客户端和服务器示例程序。

如果代码应该简单,那么您可能会询问基于传统BSD套接字的C示例。对于简短的“hello world”示例,像boost::asio这样的解决方案非常复杂

<> P>编译你所提到的例子,你必须做简单的修复,因为你在C++编译器下编译。我指的是以下文件:


发件人:

  • 将以下内容添加到两个文件中:

    #include <cstdlib>
    #include <cstring>
    #include <unistd.h>
    
    #包括
    #包括
    #包括
    
  • 在中,更改行:

    if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)
    { ... }
    
    if(connect(sockfd,&serv_addr,sizeof(serv_addr))<0)
    { ... }
    
    致:

    if(connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr))<0)
    { ... }
    

  • 正如你在C++中可以看到的,需要一个显式的转换。

    < P>这里有一些例子:

    1) 简单的
    2) 叉子
    3) 线程

    基于数据库的服务器:


    尽管许多年前,clsocket似乎是一个非常不错的小型跨平台(Windows、Linux、Mac OSX):

    这些示例是否合适?谢谢-我找到了一个示例(),但我不确定这是否太过分了,我真的需要所有这些代码吗?@nickbolton2705:可能,是的。Beej的代码包含错误处理,这也是我如此喜欢它的部分原因。还请注意,服务器支持多个并发连接,以及IPv4和IPv6。是的,这对于一个优雅的解决方案来说是非常好的-我注意到其中的一个功能是序列化,如果我需要在某个时候正确实现这一点,它可能对我很有用。上帝保佑Beej。他的教程是我小时候第一次接触*NIX上的socket编程。我使用c/c++不足以完全保留所有内容,因此每当我需要复习时,我总是向Beej寻求指导。此答案中使用的链接已过时,请立即使用。此外,在server.c中,我必须将clilen的类型更改为socklen_t,并强制转换sizeof(cli_addr)的输出;
    #include <cstdlib>
    #include <cstring>
    #include <unistd.h>
    
    if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)
    { ... }
    
    if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
    { ... }