首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是简单的C或C++ TCP服务器和客户端示例?

什么是简单的C或C++ TCP服务器和客户端示例?
EN

Stack Overflow用户
提问于 2009-03-19 14:02:28
回答 5查看 155.1K关注 0票数 49

我需要快速实现一个非常小的C或C++ TCP服务器/客户端解决方案。这只是简单地将字节数组从一台计算机传输到另一台计算机--不需要可伸缩/过于复杂。越简单越好。如果你能的话,那就快又脏。

我试图使用本教程中的代码,但无法在Linux:C++/socket.htm中使用C++/socket.htm构建代码。

如果可能的话,我想避免第三方库,因为我正在运行的系统是非常受限的。这必须是C或C++,因为现有的应用程序已经实现了。

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

将这些头添加到客户端和服务器:

代码语言:javascript
复制
#include <cstdlib>
#include <cstring>
#include <unistd.h>

server.c中,将clilen的类型更改为socklen_t。

代码语言:javascript
复制
int sockfd, newsockfd, portno/*, clilen*/;
socklen_t clilen;

client.c中,更改以下行:

代码语言:javascript
复制
if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) { ... }

至:

代码语言:javascript
复制
if (connect(sockfd,(const sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-19 14:09:58

我以前用过Beej网络编程指南。它用的是C,而不是C++,但是例子很好。直接转到第6节获取简单的客户端和服务器示例程序。

票数 48
EN

Stack Overflow用户

发布于 2009-03-19 14:21:11

如果代码应该很简单,那么您可能需要基于传统的BSD套接字的C示例。像boost::asio这样的解决方案在简短和简单的"hello world“示例中是相当复杂的。

要编译前面提到的示例,必须进行简单的修复,因为您是在C++编译器下编译的。我指的是以下文件:

http://www.linuxhowtos.org/data/6/server.c

http://www.linuxhowtos.org/data/6/client.c

来自:C++/socket.htm

  1. 在这两个文件中添加以下内容: #包括
  2. client.c中,更改行: 如果(连接(sockfd,&serv_addr,sizeof(serv_addr)) < 0) {.} 至: 如果(连接(sockfd,(const *)&serv_addr,sizeof(serv_addr)) < 0) {.}

正如您在C++中所看到的,需要显式的强制转换。

票数 15
EN

Stack Overflow用户

发布于 2009-03-19 14:03:08

尝试boost::asio (asio.html),它有很多例子。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/662328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档