草庐IT

c++ - 如何不优雅地关闭连接?

Winsock中是否有一个函数会不正常地关闭连接(即导致发送RST数据包)? 最佳答案 是的,首先使用setsockopt()将SO_LINGER选项设置为{true,0},然后关闭套接字。任何挂起的数据都将丢失,并且正常的FIN/ACK关闭序列将被RST取代。不要这样做。您可能会在飞行中丢失所有数据,并扰乱另一端。另一种意外产生这种情况的方法是在套接字仍有待处理的入站数据时关闭套接字。 关于c++-如何不优雅地关闭连接?,我们在StackOverflow上找到一个类似的问题:

c++ - (WINSOCK) C++ 游戏服务器 : Too many TCP connections at once on TCPAccept

我正在尝试进行压力测试,以防攻击者尝试一次尝试大量TCP连接到我的C++游戏服务器。我做了一个简单的程序,通过TCP端口连接1000次到我的游戏服务器。这是我的服务器接受连接的地方:boolserverIsOn=true;doublelisten=tcplisten(12345,30000,1);setnagle(listen,true);...while(serverIsOn){doubleplayerSocket=tcpaccept(listen,1);if(playerSocket>-1){cout这里是tcplisten和tcpaccept的定义:doubletcplisten

connection - 其他人如何连接到我的 AHKsocket winsock 服务器上?外网IP?

使用AHKsock(AutoHotkey),我用AHKsock_Connect、AHKsock_Send和AHKsock_Listen在两侧构建了一个极简的客户端-服务器系统,以相互沟通。如果我使用localhost连接到服务器,它可以工作并且我可以来回发送消息。但我希望可以从任何地方访问服务器。这难道不应该使用我可以看到的“外部IP”@whatIsMyIP.com吗??每当有人尝试连接到我计算机上的服务器时,他/她的连接就会超时/无法正常工作。我的服务器IP是多少?其他人如何从任何地方连接到它?我认为一定有一个简单的解决方案,因为软件本身似乎可以工作:如上所述,从同一台计算机连接到l

windows - C++在Windows上使用SSL保证Winsock TCP数据安全

我们有一个在Windows上开发的C\S应用程序。开发语言为C\C++,使用Winsock(TCP)库。现在基本功能已经完成。因为服务器端是在互联网上工作的,所以必须保证数据的安全。在互联网上搜索后,我们发现SSL可以提供帮助。Codeproject上有一篇文章:CSslSocket-SSL/TLSenabledCSocket,展示了如何使用windowsSchannel为MFCCSocket实现SSL。我还注意到该工具需要一个证书。对于我们的应用程序,我们没有证书。我们需要申请证书吗?如何申请?或者在我们的案例中实现SSL的任何简单解决方案(我们想使用WindowsSSPI,而不是其

c++ - 使用 TCP 套接字 (WIN32 API) 创建的两个窗口之间的通信

我想使用WINAPI创建两个窗口,然后我想使用TCPscokets在它们之间进行通信。到目前为止,我已经成功地创建了两个窗口并且也成功地打开了套接字。但是两个窗口将如何使用此套接字进行通信?这是我到目前为止编写的代码:另一个问题是代码只将数据从服务器发送到客户端一次。此外,除非数据从服务器发送到客户端一次,否则不会处理其他Windows消息:(有人帮帮我吗?在此处输入代码服务器窗口://ProgramName:server_window//===============================//AuthorName:AyeshaHassan//================

客户端/服务器之间的 C++/Winsock TCP 发送/接收问题

当我连续发送然后在客户端接收时,我遇到了通过套接字进行客户端/服务器通信的问题。示例:案例A:ClientServersend(...);----------->While(recv(...)>0){send(...);----------->print(message);send(...);----------->}recv(...);----------->Send(...);服务器收到3条消息并发送最后一个应答,但客户端的接收失败,并出现SOCKET_ERROR,WSAGetLastError()值为10060。使这种情况起作用的唯一方法是在客户端最后一次发送之后添加shutdo

windows - windows tcp 堆栈的缓冲区限制,特别是使用 winsocket

在开发通过winsocket进行通信的Windows应用程序时,我遇到了以下情况:Alice发起与Bob的tcpsessionBob接受,session建立。Bob正在按顺序发送大量数据(~1000MB)。Bob继续做其他事情。与此同时,Alice慢慢读取数据,每次读取N个字节(其中N是Alice缓冲区的大小,它只分配一次,因为数据在每次读取之间写入文件。此缓冲区已分配由应用程序)。调试时,我发现Bob的send()从不阻塞,即使我在第一次读取之前暂停了Alice。问题是,如何保证整个数据(~1000mb)可供Alice读取?是否有限制此缓冲区长度的已知/可配置参数?

winsock - TCP IP recv() 函数未接收到来自服务器的回显消息

我在Windows中使用TCPIP套接字程序,我在其中创建了一个客户端用于将数据传输到服务器和服务器正在将消息回显给客户端(请注意,服务器已通过telnet应用程序正常工作)。但是当我从客户端发送测试消息时,它会在服务器端收到,但是当我试图在客户端中读取回显消息时>使用recv()函数的一侧我没有得到回显消息,但是无论我在服务器侧输入什么,它都会显示在客户端侧接收recv()函数我通过此链接关注程序http://cs.baylor.edu/~donahoo/practical/CSockets/code/TCPEchoClientWS.c有人有什么解决办法吗?

tcp - 服务器必须重新启动后,服务器和客户端之间的 Winsock TCP 连接能否恢复原样?

有没有一种方法可以保存Winsock的“状态”,以便可以停止和重新启动服务器程序,并且所有客户端TCP连接继续进行,就好像什么都没发生一样,而客户端无需执行任何特殊操作?或者是一旦Winsock服务器进程终止,客户端连接只能通过所有通常的初始化调用重新建立? 最佳答案 必须通过新的连接握手重新建立丢失/关闭的连接。因此,如果您不想让客户端知道服务器已重新启动,则必须先将现有连接移动到另一个进程,然后在重新启动后将其移回。您可以使用WSADuplicateSocket()为此。 关于tcp

带有 WinSock2 的 VBA : send() sends wrong data

我正在尝试在VBA中使用WinSock2从本地主机TCP流发送(以及稍后接收)数据。目前,我主要尝试从此处复制客户端示例,https://msdn.microsoft.com/en-us/library/windows/desktop/ms738630(v=vs.85).aspx我的代码“几乎”可以工作;我可以创建一个套接字并建立到我的服务器的连接。不过,发送数据(例如调用ws2_32.dll的send()函数)很奇怪。在下面的示例中,服务器确实会收到一个长度为10的字节数组,但其内容是奇数。数组的前4个字节已设置(但随每次调用而变化),后6个字节始终为0。我不太确定发生了什么;假设我