我有一个使用Winsock进行网络连接的程序,我们现在的一个要求是将我们的程序移植到Linux。唯一阻止我们这样做的是Winsock。我的问题是:将其移植到Linux实现有多容易?是否有任何我应该注意的陷阱,如果我只是包含适当的头文件,我必须确保处理什么样的事情?感谢您的帮助!我会发布代码,但遗憾的是由于法律原因我不能。但是,我们的代码确实使用了以下内容:WSAStartup(..)WSACleanup(..)Socket(..)sendto(..)recvfrom(..)ioctlsocket(..)setsocketopt(..) 最佳答案
这个问题在这里已经有了答案:C++RedefinitionHeaderFiles(winsock2.h)(15个回答)关闭6年前。我已经创建了一个套接字包装类,但是我有太多错误,我无法弄清楚如何解决。我试过Winsocktutorialerror和Can'tincludeWinsock2.hinMSVC2010,但没用代码如下://#defineWIN32_LEAN_AND_MEAN#include#include#include#include#include#pragmacomment(lib,"ws2_32_lib")usingnamespacestd;#defineWM_SOC
我正在使用VisualStudio2015并尝试编译在我从VS2013更新之前已经工作的代码。'inet_addr':Useinet_pton()orInetPton()insteadordefine_WINSOCK_DEPRECATED_NO_WARNINGS在这段代码中:partner.sin_addr.s_addr=inet_addr(ip.c_str());我尝试使用提到的函数,但它们未定义。我试图在许多不同的地方定义宏,但什么也没发生。另一个线程说我应该包含Ws2tcpip.h而不是WinSock2并添加Ws2_32.lib。我已经添加了库,当我使用包含时什么也没发生。怎么回
我将一些“native”c++项目从Windows7上的VisualStudio2010迁移到Windows8.1上的VisualStudio2013。重建给了我这个错误。我意识到我没有安装WindowsSDK,所以我接下来安装了它,但我仍然收到错误消息。还有其他人在其他干净的VS项目迁移中得到这个吗? 最佳答案 我在SDK文件夹下搜索了丢失的文件并找到了它。因为SDK是在我迁移项目后安装的,所以路径未包含在我的项目中。我能够通过添加到我的包含和库路径来解决所有问题。我将以下文件夹添加到我的包含路径中:$(WindowsSdkDir
我包含MySQLC库所需的内容。VS2010中的自动完成功能也显示-知道这是什么吗?它们是否可以互换,两者相比有什么优势吗?谢谢! 最佳答案 @cost的回答links到一个讨论中,除其他外,问这个从未回答过的问题:IsthereareasonwhyIcan'tincludewindows.hbeforewinsock2.h,itgivesmetonsoferrors,butonceIswitchtheirordereverythingisokay...whyisthat?windows.h默认包含winsock.h(如果未定义WI
我的项目使用windows.h,其中使用了winsock.h,我需要包含使用winsock2的boost:assio。所以我收到很多错误,说Winsock.h已经包含在内。我可以定义WIN32_LEAN_AND_MEAN。这样windows.h就不会使用winsock。问题是,我需要windows.h来使用它,而我只需要Asio来实现异步计时器。我不需要它的winsock2.h。我尝试搜索如何禁用它的winsock2使用,我发现我可以通过在包含boost:asio之前定义BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN来做到这一点,但我仍然得到同样的错误。#inclu
我在Windows上使用MinGW编译器来编译带有套接字的C++应用程序。我的链接命令如下:g++.exe-Wall-Wno-long-long-pedantic-lwsock32-odist/Windows/piskvorky{therearealotofobjectfiles}我也试过了g++.exe-Wall-Wno-long-long-pedantic-lws2_32-odist/Windows/piskvorky{therearealotofobjectfiles}但在这两种情况下我都会收到此错误:build/Windows/MinGW-Windows/src/utils/t
如何防止两次包含头文件?问题是我将包含在MyClass.h中,然后我将MyClass.h包含在许多文件中,因此它包含多个次和重新定义错误发生。如何预防?我使用#pragma一次而不是包含守卫,我想这很好。MyClass.h://MyClass.h#pragmaonce#includeclassMyClass{//methodspublic:MyClass(unsignedshortport);virtual~MyClass(void);};编辑:我遇到的错误很少c:\programfiles\microsoftsdks\windows\v6.0a\include\ws2def.h(91
我正在通过Winsock创建一个UDP套接字(AF_INET、SOCK_DGRAM、IPPROTO_UDP)并尝试recvfrom在这个套接字上,但它总是返回-1,我得到WSAEINVAL(10022)。为什么?当我bind()端口时,不会发生这种情况,但我读过绑定(bind)客户端的套接字是很蹩脚的。我正在向我的服务器发送数据,它会回答,或者至少会尝试。Inc::STATSCConnection::_RecvData(sockaddr*addr,std::string&strData){intret;//returncodeintlen;//lengthofthedataintfro
我正在通过Winsock创建一个UDP套接字(AF_INET、SOCK_DGRAM、IPPROTO_UDP)并尝试recvfrom在这个套接字上,但它总是返回-1,我得到WSAEINVAL(10022)。为什么?当我bind()端口时,不会发生这种情况,但我读过绑定(bind)客户端的套接字是很蹩脚的。我正在向我的服务器发送数据,它会回答,或者至少会尝试。Inc::STATSCConnection::_RecvData(sockaddr*addr,std::string&strData){intret;//returncodeintlen;//lengthofthedataintfro