问题标签 [wsastartup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 静态包装库(用于 winsock),未定义对 XXX 的引用
我想编写一个静态库,它使用来自 winsock api(winsock 包装库)的函数。我包括 libws2_32.a 并添加编译器选项 -lws2_32。现在当我在另一个项目中链接到这个库时,它给了我这些错误:
对于我在我的库中使用的各种 winsock 函数。我在包含库的项目中包含了 libws2_32.a 并添加了选项 -lws2_32。我正在使用 CodeBlocks IDE 和 MinGW 64 位编译器。我怎样才能解决这个问题?甚至可以编写这样一个静态包装库吗?
编辑 1我删除了编译器选项 -lws2_32 并且新的构建日志看起来像这样。但是,它仍然具有对 winsock 函数错误的未定义引用。
编辑 2我尝试在包含我的静态库的项目中调用 WSAStartup(ws2_32 中的 winsock 函数),并且使用编译器选项 -lws2_32 可以正常工作。实际上现在(当我在项目“Stock”中调用 WSAStartup 时)对于包含的静态库也不会抛出对 WSAStartup 函数的未定义引用错误。但是,所有其他 winsock 函数仍然存在此错误。
c++ - C++:gethostname() 失败
我需要获取使用gethostname函数的系统主机名
但它以错误代码10093失败,即
WSANOTINITIALISED 10093
尚未执行成功的 WSAStartup。应用程序没有调用 WSAStartup 或 WSAStartup 失败。应用程序可能正在访问当前活动任务不拥有的套接字(即,尝试在任务之间共享套接字),或者 WSACleanup 已被调用太多次。
下面是我的程序代码:
什么可能导致此失败?
编辑
在 gethostname 函数调用之前添加以下代码解决了这个问题。
c# - 如何在 C# 中调用 WSAStartup()(在 Windows Phone 7 上)?
目标:获得一个 Windows Phone 7 名称(如“我的 Windows Phone”)。
以上代码以 C++ 形式提供,我想将其更改为 C#。一个原因是因为我只有 Visual Studio 2012 Express,它不允许我将 C++ 与 Windows Phone 项目一起使用,而且我已经购买了 VS2013,为此买不起 VS2012。另一个原因是 C++ 中有超过 150 个依赖文件,代码太多了!
所以,我的第一次尝试:(灵感来自http://www.experts-exchange.com/Programming/Languages/.NET/Q_21014265.html)
它失败并WSAStartup(0x0002, out dummy);
出现异常:
MyLibrary.dll 中出现了“System.MethodAccessException”类型的第一次机会异常
附加信息:尝试访问该方法失败:MyLibrary.WSAStartup(System.Int16, .WSAData&)
我的第二次尝试:(灵感来自Convert service name to port)
它失败并NativeMethods.WSAStartup(0x0202, ref dummy);
出现异常:
MyLibrary.dll 中出现了“System.MethodAccessException”类型的第一次机会异常
附加信息:尝试访问方法失败:MyLibrary+NativeMethods.WSAStartup(System.Int16, .WSAData&)
有什么建议可以让它在 WP7 设备上运行吗?
[编辑:这篇文章还建议版本 0x0101 使用 WSAStartup() 的可能性]
c# - 3 次成功调用后,Web 服务调用导致 WSAStartUp 错误
我有一个 C# winforms 应用程序,它通过 .DLL 作为某些访问设备的服务器。
用户访问是通过将输入发送到 Web 服务(设置为 Web 引用)并将结果返回到设备来确定的,但是在超时的情况下,应用程序会断开所有设备,停止服务器并启动后台工作程序。后台工作人员重试与 Web 服务的连接,如果成功,则再次启动服务器并重新连接设备。
这一切都很好,但不幸的是,在第三四次或第五次,backgroundworker 尝试重新连接到 web 服务,连接失败并出现异常"Either the application has not called WSAStartup, or WSAStartup failed"。每次以下尝试,都会得到一个类似的错误。
这是 backgroundworker 的源代码,它的代码非常简单:
附带说明一下,Web 服务在其他方面就像一个魅力。
windows-ce - 不调用 WSACleanup 的后果
我正在设计将在无头 Windows CE 6.0 设备上运行的应用程序。这个想法是制作一个将在启动时启动并运行直到断电的应用程序。(基本上它看起来像一个服务,但应用程序更容易调试,而无需完全麻烦停止/部署/启动/附加到处理过程)
我担心的是在开发过程中会发生什么。如果我调试/部署应用程序,我看不到以友好和简单的方式关闭它。(请随意建议这是否可以以更好/用户友好的方式完成)我将停止调试器,结果将是 WSACleanup 未被调用。
现在,问题。不调用 WSACleanup 的后果是什么?我可以使用调试器再次启动和运行 winsock 应用程序吗?或者会不会有资源泄漏阻止我这样做?
在此先感谢,杰夫
windows - 程序退出前是否需要调用WSACleanup
我有一个调用WSAStartup
. WSACleanup
程序退出前是否需要调用?如果我不这样做,会不会有任何负面影响?特别是:
不同于仅仅exit(0)
。我意识到在 Win16 上省略WSACleanup
会泄漏系统资源,情况仍然如此。
c++ - WSAStartup with RAII
- RAII 调用时不执行析构函数
exit
。所以WSACleanup
不运行。有什么问题?我发现 没有任何libnet
使用,为什么?WSAStartup
WSACleanup
WSAStartup
一个进程可以调用多次,那怎么保证WSACleanup
够用呢?- 如何使用
WSAStartup
又WSACleanup
简单又优雅? - 另外我写了这个测试代码进行测试,
WSAStartup
没有WSAClean
发现任何异常(内存增长或崩溃......)
代码:
c# - .NET 使用 WSAStartup 对 64 位应用程序安全吗?
对于 64 位应用程序,.NET Framework 版本和 WSAData 结构的本机 Win32 版本之间存在不匹配,因为字段的顺序不同。我复制了 .NET 版本以用于我们基于 C# 的产品,一位同事担心我导致了内存损坏。使用 DllImport / PInvoke 时是否存在由于这种不匹配而导致内存损坏的风险?将本机版本编组到托管版本时是否存在无效内存访问的风险?假设我不关心实际访问生成的 WSAData 对象的字段。我只是想确定我对 WSAStartup 的调用不会破坏内存或使应用程序崩溃。
这是 WinSock2.h 中的本机 C++ 版本。请注意,成员的顺序在 64 位和 32 位中是不同的。WSADESCRIPTION_LEN 为 256,WSASYS_STATUS_LEN 为 128。
c# - 使用 C# 时初始化 WinSock?
我对使用 DLL 的 C# 应用程序有问题,该 DLL 本身打开 TCP/IP 连接。我的问题:从 C# 调用时,此 DLL 不起作用。
我从其他应用程序中知道WSAStartup()
必须调用一个函数来初始化 Winsock。
C# 是否需要类似的东西?
谢谢!
c# - Pinvoke / 从 C# 调用本机 Windows API 函数
在我的 C# 应用程序中,我使用外部 DLL 的函数。此 DLL 本身使用网络功能。所以有必要从我的 C# 应用程序中初始化 Winsock 以让网络套接字为这个 DLL 工作。这就是我尝试执行 WSAStartup 进行初始化的方式,但它似乎不起作用:
WSAStartup() 似乎调用成功,但使用的 DLL 仍然无法访问网络。所以似乎 WSAStartup() 出于某种原因没有工作。有什么想法我在这里做错了吗?
亲切的问候
迈克尔