草庐IT

WinSock2

全部标签

tcp - Powerbuilder Winsock 库实现

由于我必须在我们的Powerbuilder12.5项目中实现一些winsock服务,我遇到了以下问题:假设我们有发送方S向接收方R发送(发起通信)数据。R如何识别发送方使用的发送方channel(IP和端口)以便向发送方发送回复?预先感谢您抽出宝贵时间与合作。约翰。 最佳答案 您可以直接从PB调用winsockdll(尽管传递一些API结构可能会很麻烦),或者您可能更喜欢使用PBWinsockwrapper同时支持TCP和UDP。 关于tcp-PowerbuilderWinsock库实现

c++ - Winsock TCP 监听器在 closesocket() 调用成功后保持在 LISTENING 状态

我正在处理一个现有的DLL,其中创建了一个TCP监听套接字,并设置为在出现故障时使用SO_REUSEADDR立即重新绑定(bind)到同一个套接字。然而,目前存在一个问题,即使在成功调用closesocket()之后,监听器仍将保持在LISTENING状态;由于它没有进入TIME_WAIT,因此在重新创建套接字时会在同一端口上创建一个新的监听器。然后客户端无法连接到新的监听器(大概)。SO_LINGER设置为0秒。套接字关闭时没有挂起的传输。最旧的套接字似乎在大约十秒后关闭,而没有明显进入另一种状态。在成功调用closesocket()后,什么可以使监听器保持在LISTENING状态?

multithreading - winsock 2. 同时发送的线程安全。 TCP

是否可以让多个线程在同一个套接字上发送?流会交错还是第一个线程上的套接字阻塞(假设是tcp)?我发现的大多数意见似乎都警告不要这样做,因为明显担心交错,但我也发现了一些相反的评论。交错恐惧是winsock1的遗留问题吗?它们是否适合winsock2?有没有一种方法可以设置允许缺少本地同步的winsock2套接字?下面两种相反的意见...谁对?评论1“Winsock2实现应该是完全线程安全的。在不同线程上同时读取/写入应该成功,或者失败并返回WSAEINPROGRESS,这取决于创建套接字时重叠标志的设置。无论如何,默认情况下会创建重叠套接字;所以你不必担心。确保你没有使用NTSP6,如

c++ - Winsock 端口监听器

我已经完成了一个TCP端口监听器。当我使用带有127.1.1.0的客户端和监听器必须接受连接的端口在本地连接到它时,它会起作用。你能让它监听通过该端口连接的任何IP吗?是否可以监听从服务器接受的第二个客户端端口? 最佳答案 您需要指定INADDR_ANY绑定(bind)。您不能将同一个套接字绑定(bind)到多个端口,但您当然可以创建多个套接字,每个套接字监听不同的端口。 关于c++-Winsock端口监听器,我们在StackOverflow上找到一个类似的问题:

vb6 - 如何阻止 VB6 Winsock 发送流字节结束?

如何阻止VB6Winsock发送流结束字节?它会在每条消息后发送一个0,这会弄乱我的代码。 最佳答案 您收到的唯一字节是发送的字节。TCP/IP不会添加额外的字节。此外,在TCP/IP中,“流的结尾”与消息的结尾不同。除非连接断开,否则流永远不会结束。如果您可以发布一些代码,我们可以深入了解问题。 关于vb6-如何阻止VB6Winsock发送流字节结束?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

C++ Winsock send,recv - 它们是如何工作的

我是网络编程的新手,我正在尝试了解send和recv等函数在TCP连接中的工作原理。我知道在客户端和服务器之间的连接中,例如,当客户端设法向服务器发送一条消息,消息被分成不同的包,在它到达时,服务器部分检查包的总和是否与发送前相同,如果正常则发送一条消息作为批准返回给客户端。如果出现问题,客户端会重新发送消息。我不明白的是,如果你从客户端发送一条消息,然后让服务器休眠10秒,你仍然可以在客户端做你想做的事,比如发送函数在另一个线程中执行,或者如果您在这10秒内多次使用发送功能,消息将作为当时使用的消息的组合到达。如果有人能解释一下情况,我将不胜感激! 最佳答

vb.net - VB.net 中的 Winsock 不工作

嘿,我正在尝试让这段在VB6中工作的代码在VB.net2008中工作得很好。它似乎不想连接(但在通过sockMain.Connect()。sockMain.RemoteHost="192.168.1.77"sockMain.RemotePort=77sockMain.Connect()现在当我这样做时:OnErrorGoTooopssockMain.SendData(txtSend.Text)oops:IfErr.Number=40006ThenMsgBox("Itdoesntseemthattheserverisrunning.Pleasecheckitandtryagain")En

tcp - 具有无限超时的 Winsock TCP 连接

我希望我的WinsockTCPconnect()调用以无限超时阻塞。问题:1.我该怎么做?从功能的角度来看,我的上述愿望正是我所需要的。从技术角度来看,有什么理由认为这是个坏主意吗?谢谢你,戴夫 最佳答案 如果您想永远等待,只需在connect超时时重试即可。超时是TCP工作原理的基础。您可以调整机器的设置(参见示例:WhichisthedefaultTCPconnecttimeoutinWindows?),但这不是一个好主意(影响所有TCP连接)。 关于tcp-具有无限超时的Winso

c++ - 通过 winsock 发送压缩字符串

大家好!我在winsock2libc++上有一个简单的TCP服务器和客户端。服务器只发送字符串消息。客户只是接收它们。这里一切都很好。但是当我使用zlib库压缩字符串时,数据已损坏,我无法在客户端正确接收它们以进行解压缩。有人能帮我吗?服务器:{std::lock_guardlock(mtx);std::cout(msg.c_str()),msg.size())){std::coutlock(mtx);send(newConnection,(char*)&msgl_size,sizeof(unsignedlong),NULL);send(newConnection,(char*)&ms

vb6 - 您如何知道已向 Web 服务器发出 POST 或 GET 的 Winsock 控件何时接收到所有数据?

我正在使用VB6Winsock控件。当我对服务器执行POST时,我会以多个数据到达事件的形式返回响应。您如何知道所有数据何时到达?(我猜是在Winsock_Close事件触发时) 最佳答案 我过去使用过VB6Winsock控件,我所做的是以某种方式格式化我的消息以了解所有数据何时到达。示例:每条消息以“[”开头,以“]”结尾。[消息文本]”当数据从DataArrival事件传入时,检查消息“]”的结尾。如果它在那里,您至少会收到一条完整的消息,并且可能是一条新消息的开始。如果有更多消息正在等待,请将您的消息数据存储在表单级变量中,并