gpt4 book ai didi

C++ websockets 服务器/客户端 跨平台 linux/windows

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:57 43 4
gpt4 key购买 nike

我正在尝试使用 Websocket 客户端/服务器实现示例代码:

  • 适用于 windows 和 linux
  • 支持多个客户端
  • 无额外依赖,纯C/C++代码易用

例如,实现像聊天室这样的东西,可以接受很多用户,这将是我了解 Websockets 工作原理并在我的项目中使用它们的一个很好的基础。

我正在查看 this website我在 C++ 中看到了这个 Websockets 示例。

我正在使用使用 MinGW 编译器的 Clion IDE,但这些 header 不存在:

#include <netinet/in.h>
#include <netdb.h>

自动代码完成建议这些 header :

#include <winsock.h>
or
#include <winsock2.h>

即使我在我的 IDE 上没有看到这些 header 的错误,但当我运行代码时,我会遇到链接错误:

CMakeFiles\server_client.dir/objects.a(server.cpp.obj): In function `main':
C:/Users/Shiro/ClionProjects/server_client/server.cpp:44: undefined reference to `listen@8'
C:/Users/Shiro/ClionProjects/server_client/server.cpp:58: undefined reference to `select@20'
C:/Users/Shiro/ClionProjects/server_client/server.cpp:66: undefined reference to `__WSAFDIsSet@8'
collect2.exe: error: ld returned 1 exit status

旁注,这段代码是否适合用 C++ 实现 Websocket 客户端/服务器?我希望它在 windows 和 linux 上都能工作,并且没有外部依赖性。只是纯 C/C++。我看到的几个库(比如 libwebsockets)对我来说太困惑和过于复杂,而且它们缺少任何文档或示例。我一行代码都没看懂。其他语言(如 Java 或 C#)的 Websockets 更直接。有人可以指出我正确的方向吗?

最佳答案

Windows 套接字 API 与 POSIX API 非常相似,但也有一些差异,如 this MSDN article 中所述。 ,以及您必须调用 WSAStartup() 的事实在使用这个 API 之前。

关于 header 取winsock2.h。但是您不应忘记在您的项目中包含套接字库(makefile/项目参数或作为 #pragma comment(lib, "Ws2_32.lib")

如果你想要可移植的代码,你可能需要考虑boost::asio

关于C++ websockets 服务器/客户端 跨平台 linux/windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36510279/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com