草庐IT

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事件传入时,检查消息“]”的结尾。如果它在那里,您至少会收到一条完整的消息,并且可能是一条新消息的开始。如果有更多消息正在等待,请将您的消息数据存储在表单级变量中,并

windows - 最小 Winsock2 应用程序的性能调试网络吞吐量

我有一个非常简单的Winsock2TCP客户端——下面的完整列表——它只是发送一堆字节。但是,它在网络上的运行速度非常慢;数据只是慢慢流过。这是我尝试过并发现的(两台WindowsPC在同一个LAN上):从一台机器到另一台机器运行这个应用程序很慢-发送8MB大约需要50秒。两个不同的服务器-netcat和一个自定义编写的服务器(就像下面的客户端一样简单)-产生了相同的结果。taskmgr显示CPU和网络几乎未被使用。在同一台机器上使用服务器运行此应用程序速度很快-发送8MB大约需要1-2秒。另一个客户端netcat工作正常-发送20MB的数据大约需要7秒。(我用的是Cygwin自带的n

.net - VB6 WinSock TCP 客户端和 .NET TCP 服务器

遗留产品的VB6WinSockTcp客户端只会“错过”发送给它们的一半消息。我将从事一个服务器项目,其中需要用VB6编写的旧遗留应用程序连接到C#TCP服务器。由于System.Net.TcpClient,当两个端点都是.NET时,TCP客户端/服务器编程一直很容易。然而,看起来VB6组将被VB6WinSock控件卡住(这是否像我听说的那样糟糕?)。是否有任何注意事项或提示可以解决任何可避免的地雷或障碍?当前的实现有一个服务器(c#.net)以下列方式发送消息:privateboolSendToStream(NetworkStreamclientStream,stringmessage

c++ - 使用Winsock的send()/recv()时,确认响应是否必要?

使用C++的Winsock,我使用send()/recv()TCP连接来发送和接收数据。我想确定数据已经传递给另一方,并且想知道是否建议在(如果)使用recv接收数据后发送一些确认消息。这有两种可能性,请提出建议:如果发送返回传递的缓冲区的大小,则假定数据至少已传递到线路另一侧的recv函数。当我说“至少”时,我的意思是即使recv在那里失败(例如,由于缓冲区不足等),我也不在乎,我只是想确保自己已完成服务器的部分工作正确-我已经完全发送了数据(即数据已到达另一台计算机)。使用其他确认:在使用recv接收到数据之后,发回一些已接收数据包的ID(已发送的每个数据的header的一部分),

c - Winsock C TCP 套接字

我之前在Python中使用过TCP套接字。它在C语言中看起来非常相似,但我什么也做不了。socket(AF_INET,SOCK_STREAM,0);返回-1,这当然表示错误。我怎么会这么快就错了?如果你能帮我解决这个问题,那就太好了,但如果你能为我提供一些简单的、基本的源代码,那将是非常有帮助的。它甚至不需要做任何事情,也不需要处理错误。我只需要了解如何正确创建服务器套接字、绑定(bind)它、监听它并接受客户端以及如何创建和连接客户端套接字。我可以自己弄清楚所有花里胡哨的东西。谢谢! 最佳答案 你打过电话了吗WSAStartup在

windows - netsh winsock reset - 它的作用是什么?为什么我的无线网卡在使用该命令之前没有建立良好的连接?

我想知道命令netshwinsockreset具体做了什么,为什么/如何解决我过去几个月在Windows10计算机上遇到的无线问题。我已经阅读了关于winsock的wiki,并且一直在研究/找到有关套接字及其功能的文章,但我无法找到任何可靠的解释来解释为什么/如何影响我的无线连接。我会尝试连接并且它会连接但声称“无法访问互联网”。它会连接但不会加载任何网页等。有人可以向我解释为什么/如何使用命令netshintipreset和netshwinsockreset最终解决了我的问题吗?运行命令后问题已解决。我只是想要更深入的了解。 最佳答案