28得票5回答
Boost::asio中的winsock和winsock 2兼容性问题

我的项目使用了windows.h,其中也用到了winsock.h,而我需要包含boost:asio,它使用的是winsock2.h。因此我得到了许多错误,提示Winsock.h已经被包含了。 我可以定义WIN32_LEAN_AND_MEAN来避免windows.h使用winsock。但问题是,...

26得票5回答
无法定义对 `__imp_WSACleanup' 的引用

这是我的第一个使用 winsock 的程序。正如您所看到的,我已经 #include <winsock2.h> 并链接了 ws2_32.dll,但代码仍无法编译:#include<winsock2.h> #pragma comment(lib, "ws2_32") cl...

20得票2回答
API使用sockaddr_storage

我正在尝试编写一些与IP无关的代码,根据各种来源的建议,我尝试使用sockaddr_storage。然而,所有的API调用(getaddrinfo、getnameinfo)仍然依赖于struct sockaddr。并且它们之间进行转换并不是一个好的选择,会引起很多其他问题。 将其分别转换为s...

19得票5回答
结构体的序列化

假设我有一个结构体,其中包含我想要使用winsock 2将其成员值发送到另一个系统的内容。 我正在使用C ++语言。 如何将其转换为char *,并考虑在发送之前必须对结构进行序列化,以及如何在另一端将char *反序列化为结构?我发现boost序列化被建议用于类似的问题,但是否可以用简短的代...

19得票4回答
TCP穿透技术

我正在使用mingw工具链和windows socket尝试实现TCP打洞。我认为过程是正确的,但洞似乎没有打通。我参考了这个。 A 和 B 连接到服务器 S S 向 A 发送 B 的路由器 IP + 它用于连接到S的端口 S 对 B 也做同样的事情 A 开始了两个线程: 一个线程尝试...

19得票2回答
在一个进程中,能否判断WSAStartup是否已经被调用?

我已经开始编写一个利用 sockets 的 ActiveX 控件。 使用此控件的应用程序可能会或可能不会同时使用 sockets。 我的控件是否能够判断 WSAStartup 是否已经被调用? 如果不能,就调用它。通过一个简单的测试可以发现,多次调用 WSAStartup 是被允许的。 但...

18得票3回答
WINSOCK - 如何在连接不存在的IP时设置连接尝试的超时时间?

我正在用C++开发一个RTSP源过滤器,并且使用WINSOCK 2.0的阻塞套接字。当我创建一个阻塞套接字时,我会将它的SO_RCVTIMEO设置为3秒,如下所示: int ReceiveTimeout = 3000; int e = setsockopt(Socket, SOL_SOCK...

15得票4回答
确定套接字和文件描述符之间的区别。

在Unix中,一切皆是文件的理念支持read()、write()和close()函数,但在Win32上不支持。 我想模仿这种方式,但不知道如何区分WinSocks2中的sock是socket还是fd。//returns 1 if `sock` is network socket, // ...

15得票4回答
不能同时包含WinSock2和Windows.h两个文件

我遇到了一个问题,就是无法同时包含两个文件。 现在,我知道我需要先包含Winsock2,然后是windows.h,或直接使用以下方式:#define WIN32_LEAN_AND_MEAN 但是,我仍然有一些问题 我有一个名为XS.h的头文件,看起来像这样#ifndef XS_H #defi...

14得票2回答
无法在MSVC 2010中包含Winsock2.h

我无法在MSVC++2010项目中包含WinSock2.h头文件。一开始我以为是我的问题,因此我创建了一个空项目来测试我的代码。下面是这个空项目的代码:#include <Windows.h> #include <WinSock2.h> int main(void)...