使用我自己的程序或其他程序,如果进程是使用CreateProcessWithLogonW或CreateProcessAsUserW创建的,我无法在调用时让winsock运行。它在我创建套接字时返回此错误:WSAEPROVIDERFAILEDINIT10106Serviceproviderfailedtoinitialize.Therequestedserviceprovidercouldnotbeloadedorinitialized.Thiserrorisreturnedifeitheraserviceprovider'sDLLcouldnotbeloaded(LoadLibrary
我对winsock的一些事情感到困惑。首先,包含Winsock2.h与winsock2.h('w'大写)之间的区别是什么其次,ws2_32.lib与wsock32.lib链接有什么区别?我尝试了几种组合,但它们会导致编译时错误。任何人都可以向我解释使用什么背后的逻辑推理吗?谢谢尼克 最佳答案 Winsock2.h和winsock2.h没有区别。在典型的Windows文件系统上,文件名不区分大小写。ws2_32.lib文件用于Winsock2,而wsock32.lib用于过时的旧版本。 关
我在Windows(Win7)上有一个非常大的C++服务器应用程序。它编译良好并且运行良好,但有时IP连接失败。我怀疑某些对WinsockAPI的调用获得了错误的参数,并且并未正确检查所有结果代码。有没有一种方法可以跟踪对WinsockAPI的所有调用(包括参数),以便我可以检查它们是否存在连接失败?可能类似于Linux上的strace? 最佳答案 由于您运行的是Windows7,您可以使用WinsockTracing自Vista以来可用的设施。 关于c++-如何调试WinsockAPI
我正在尝试让这段代码工作:#include#include#include#include#pragmacomment(lib,"ws2_32.lib")#includeusingnamespacestd;intport=5012;SOCKETlisten_sock;SOCKETclient_sock;charFR_recv_buf[1048576]="";charrecv_buf[102400]="";intReceive();intListen();//functiontoinitializewinsockboolInitializeWinsock(){WSADATAwsaData
在已经被客户端丢弃的TCP套接字上调用send()会导致内存访问冲突,因为当我运行我创建的服务器应用程序然后用来自浏览器的请求轰炸它时,它崩溃了在处理大约7到11个请求之后。具体来说,它接受连接,然后最多等待10秒左右,然后Windows抛出“此程序已停止工作...”消息。如果我删除send()调用,则不会发生此类崩溃,这使我相信Microsoft的send()不能安全地处理从另一端关闭的套接字。我知道有多种方法可以检查套接字是否实际上已关闭,但我不想先检查再发送,因为客户端仍有可能在检查和发送之间中断。编辑:我注意到close()socketdirectlyaftersend():u
由于我必须在我们的Powerbuilder12.5项目中实现一些winsock服务,我遇到了以下问题:假设我们有发送方S向接收方R发送(发起通信)数据。R如何识别发送方使用的发送方channel(IP和端口)以便向发送方发送回复?预先感谢您抽出宝贵时间与合作。约翰。 最佳答案 您可以直接从PB调用winsockdll(尽管传递一些API结构可能会很麻烦),或者您可能更喜欢使用PBWinsockwrapper同时支持TCP和UDP。 关于tcp-PowerbuilderWinsock库实现
我正在处理一个现有的DLL,其中创建了一个TCP监听套接字,并设置为在出现故障时使用SO_REUSEADDR立即重新绑定(bind)到同一个套接字。然而,目前存在一个问题,即使在成功调用closesocket()之后,监听器仍将保持在LISTENING状态;由于它没有进入TIME_WAIT,因此在重新创建套接字时会在同一端口上创建一个新的监听器。然后客户端无法连接到新的监听器(大概)。SO_LINGER设置为0秒。套接字关闭时没有挂起的传输。最旧的套接字似乎在大约十秒后关闭,而没有明显进入另一种状态。在成功调用closesocket()后,什么可以使监听器保持在LISTENING状态?
是否可以让多个线程在同一个套接字上发送?流会交错还是第一个线程上的套接字阻塞(假设是tcp)?我发现的大多数意见似乎都警告不要这样做,因为明显担心交错,但我也发现了一些相反的评论。交错恐惧是winsock1的遗留问题吗?它们是否适合winsock2?有没有一种方法可以设置允许缺少本地同步的winsock2套接字?下面两种相反的意见...谁对?评论1“Winsock2实现应该是完全线程安全的。在不同线程上同时读取/写入应该成功,或者失败并返回WSAEINPROGRESS,这取决于创建套接字时重叠标志的设置。无论如何,默认情况下会创建重叠套接字;所以你不必担心。确保你没有使用NTSP6,如
我已经完成了一个TCP端口监听器。当我使用带有127.1.1.0的客户端和监听器必须接受连接的端口在本地连接到它时,它会起作用。你能让它监听通过该端口连接的任何IP吗?是否可以监听从服务器接受的第二个客户端端口? 最佳答案 您需要指定INADDR_ANY绑定(bind)。您不能将同一个套接字绑定(bind)到多个端口,但您当然可以创建多个套接字,每个套接字监听不同的端口。 关于c++-Winsock端口监听器,我们在StackOverflow上找到一个类似的问题:
如何阻止VB6Winsock发送流结束字节?它会在每条消息后发送一个0,这会弄乱我的代码。 最佳答案 您收到的唯一字节是发送的字节。TCP/IP不会添加额外的字节。此外,在TCP/IP中,“流的结尾”与消息的结尾不同。除非连接断开,否则流永远不会结束。如果您可以发布一些代码,我们可以深入了解问题。 关于vb6-如何阻止VB6Winsock发送流字节结束?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com