草庐IT

具有多个客户端的 C++ Winsock 服务器?

我编写了一个程序,通过TCP连接与Bittorrent跟踪器对话。我想扩展它的功能,通过C++中的winsock同时与多个跟踪器对话。我需要多个socket吗?如果是这样,我是否需要为每个套接字初始化一个WSADATA结构? 最佳答案 每个TCP连接需要一个套接字,即每个远程IP/端口对一个。您只需要调用WSAStartup一次初始化winsock图书馆。 关于具有多个客户端的C++Winsock服务器?,我们在StackOverflow上找到一个类似的问题:

delphi - 使用 tcp 是否保证它会被发送/接收?

我一直在为一个friend和我做一个简单的winsock文件传输来共享文件,而不需要每次都上传到mediafire。但是我遇到的一个问题是/是(取决于你如何看待我当前的解决方案)我无法在不损坏文件的情况下发送文件。目前我发送/接收的解决方案是:procedureSenBuf(varbuf;count:dword);vara,c:pointer;cousend,tmp,left:dword;begina:=@buf;cousend:=0;left:=count;repeatc:=ptr(dword(a)+cousend);tmp:=Send(hSocket,c^,left,0);inc(

在 C 中将字节转换为 uint32

我不断地通过TCP/IP从LabVIEW向C程序发送像素值数组(uint32)。我正在使用Ws2_32.lib中的recv函数来接收字节,但我必须将它们转换回uint32数据类型并且在这种情况下我真的不知道该怎么做。如果有人展示如何去做,我将不胜感激。提前致谢#defineDEFAULT_BUFLEN256#include#include#pragmacomment(lib,"ws2_32.lib")//WinsockLibraryintmain(intargc,char*argv[]){WSADATAwsa;SOCKETs,new_socket;structsockaddr_inse

C++ 低吞吐量 winsock TCP 测试应用程序

我正在尝试构建一个在本地主机上运行的快速服务器和客户端。这个想法是从另一个程序发送数据block,并快速处理它。一次只有一个客户端连接到服务器。我首先尝试使用boost::asio库实现它。一切正常,除了吞吐量非常慢,415兆字节/秒。然后我开始用winsock创建一个测试用例,它也有非常相似的吞吐量,434兆字节/秒。非常慢。我原本期望在40GB或每秒至少几GB的范围内有更多数据。我很感激任何建议,因为我不擅长网络编程。我当前的客户端功能:boolsendDataWin(size_tsize,constsize_tblocksize,size_tport){intresult;str

C++ 在 Windows 上禁用延迟确认

我正在尝试在Windows计算机上复制一个实时应用程序,以便能够更轻松地进行调试和更改,但我遇到了延迟确认问题。我已经禁用了nagle并确认它稍微提高了速度。当发送大量小数据包时,窗口不会立即确认并延迟200毫秒。对此进行了更多研究,我遇到了this.更改注册表值的问题在于,它会影响整个系统,而不仅仅是我正在使用的应用程序。无论如何,是否可以使用setsockopt在linux中禁用TCP_QUICKACK等窗口系统上的延迟ACK?我尝试对12进行硬编码,但从WSAGetLastError得到了WSAEINVAL。我在github上看到一些开发人员提到使用SIO_TCP_SET_ACK

c++ - 服务器/客户端 TCP 异步(winsock)//FD_WRITE 问题

我需要你的帮助,因为我必须用C++制作两个控制台应用程序:一个客户端能够向服务器发送尽可能多的字符串(以便发送坐标)。我成功地制作了一个阻塞套接字,但是因为我必须在开发平台(3DVIAVirtools)中集成它之后在每个帧调用我的脚本,所以除了使用异步套接字之外我没有其他解决方案。*我的问题是我只能发送一次字符串,并且在我不再收到FD_WRITE之后...*这开始让我发疯所以任何帮助将不胜感激(我是编程的初学者),在此先感谢所有对我的问题感到有点担心的人这是我的代码,服务器#include#include#include#pragmacomment(lib,"ws2_32.lib")#

java - C++ TCP Winsock 服务器多次接收相同的数据包

我编写了一个非常简单的C++服务器,我从Java应用程序连接到它。C++服务器使用winsock2。我正在从我的客户端向服务器发送UTF8编码的数字,在收到这些数字后,我希望服务器执行一个操作。但是,我的服务器似乎正在接收一系列数字。目前,我让服务器每1毫秒监听一次新消息。这是接收消息的C++服务器代码:boolreceive(){charbuffer[1024];intinDataLength=recv(Socket,buffer,sizeof(buffer),0);if(buffer[0]!='\0'){std::cout这是在循环中调用的,如下所示:while(receive()

c - 拆分 TCP 流上的 Winsock2 错误 10014

先写代码DWORDWINAPItcp_t(LPVOIDlpParam){SOCKETtcp_client_s=(SOCKET)lpParam;structsockaddr_intcp_client;inttcp_client_len=sizeof(tcp_client),length;charreq[4096],resp[4096];getpeername(tcp_client_s,(structsockaddr*)&tcp_client,&tcp_client_len);cli_log(PROTO_TCP,LOG_SYS,"(%s:%d)TCPthreadspawned\n",ine

c - 如何检测对方在 TCP 套接字上调用了 shutdown()?

比如说,一个tcp客户端已经连接到套接字s上的一个tcp服务器。接下来,客户端调用shutdown(s);,那么服务端应该如何检测到客户端做了那个操作呢?PS:我知道服务器会收到FD_CLOSE。但是,我不知道如何在服务器端检查该标志。 最佳答案 来自winsock的recv描述:Iftheconnectionhasbeengracefullyclosed,thereturnvalueiszero.从recv、WSARecv(或ReadFile)获取零字节计数是了解对方已关闭连接的常用方法.

c++ - winsock 错误 10049 尝试绑定(bind)

我的服务器连接有问题。当我尝试将服务器绑定(bind)到我的外部设备IP时,出现winsock错误:10049无法分配请求的地址。使用本地主机服务器工作正常。这个IP地址:192.168.0.202ping成功。我在win8.1上工作。我关闭了防火墙和WindowsDefender,但没有帮助。服务器实现代码取自http://www.planetchili.net/forum/viewtopic.php?f=3&t=3433#include"Server.h"Server::Server(intPORT,boolBroadcastPublically)//Port=porttobroa