问题标签 [winsock2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
19107 浏览

c++ - 使用带有 UDP 套接字的 Connect()、send()、recv 时出现问题

对于我的 Uni 任务,我必须创建一个快节奏的网络游戏,因此选择使用 UDP 而不是 TCP。我知道 UDP 和 TCP 编程的许多不同之处,并且通读了 MSDN 关于 winsock 的文档的大部分相关部分。在 MSDN 上,它声明通过 connect() 函数创建 UDP 套接字应该将套接字绑定到指定的地址和端口,因此能够将 send() 和 recv() 函数与创建的套接字一起使用。

对于我的应用程序,我创建了一个客户端并使用环回地址使用 connect(),该环回地址通过 send() 函数发送多个数据包。客户端在调用 select() 之后,会收到它发出的数据包。但是,我从 recv() 函数得到的结果是 SOCKET_ERROR,使用 WSAGetLastError() 的错误描述是“现有连接被远程主机强行关闭”。

如果我使用bind()函数并使用sendto()通过环回地址发送数据,我recv()数据包没有任何错误......有谁知道为什么connect()函数没有做它应该做的事情,有没有人能够使用带有 connect() 函数的 UDP 套接字?

0 投票
1 回答
2993 浏览

c++ - 使用 C++ Winsock API 上传 PNG 文件 (HTTP POST)

我正在尝试通过 Winsock2 HTTP Post 上传 PNG 文件。这是我的请求字符串:

连接正常,没有错误等,fileCon顺便说一句来自ReadFile(). 并且没有错误代码。读取的字节数与 的输出相同GetFileSize()。我尝试显示的内容,fileCon但只给了我这个:

替代文字

不要介意标题“错误”(我设置了它)。

此外,该请求需要很长时间才能完成,并且给了我一个空白回复。是的,没有 HTTP 标头的空白。我的请求正确吗?我真的应该在 POST 数据中包含文件内容吗?

提前致谢。

编辑:PNG 大小约为 256KB。我的连接速度为 1mbps。

编辑:对不起,如果信息不足。无论如何,这是我最近所做的:

0 投票
2 回答
2842 浏览

c# - 压力测试简单 tcp 服务器时得到 10060(连接超时)

我创建了简单的 tcp 服务器 - 它运行良好。

当我们切换到压力测试时,问题就开始了——因为我们的服务器应该处理许多并发打开的套接字——我们创建了一个压力测试来检查这一点。不幸的是,当并发打开的套接字数量在 100 左右时,看起来服务器阻塞并且无法及时响应新的连接请求。

我们已经尝试了几种类型的服务器 - 并且都产生相同的行为。

服务器:可以类似于这篇文章中的示例(都产生相同的行为)

如何编写可扩展的基于 Tcp/Ip 的服务器

这是我们正在使用的代码 - 当客户端连接时 - 服务器将挂起以保持套接字处于活动状态。

公共类服务器

压力测试客户端:是一个简单的 tcp 客户端,一个接一个地循环和打开套接字

有没有简单的方法来解释这种行为?如果 TCP 服务器会产生更好的结果,也许 c++ 实现?也许这实际上是一个客户端问题?

欢迎任何评论!

提供

0 投票
3 回答
4089 浏览

c++ - 获取 WSA 错误代码的格式化消息

我在一个win32 c++ 应用程序中使用winsock2。我将使用 MessageBox 显示可以通过调用 WSAGetLastError() 检索的网络错误。我怎样才能做到这一点?我看到了 FormatMessage 但我不明白如何使用它

0 投票
1 回答
1814 浏览

c++ - C++ Winsock - 接受()

我已经开始尝试用 C++ 学习 Winsock,但遇到了一些问题。我首先遵循 MSDN 上的 Winsock 示例(一个基本的客户端-服务器)。 http://msdn.microsoft.com/en-us/library/ms738545(v=vs.85).aspx

当我构建并运行代码时,我得到了输出:

客户端.exe

发送 14 个字节。
连接关闭。

服务器.exe

Server.exe cmd 窗口中没有任何反应。我不知道我做错了什么。我是 Winsock 的新手,但就我在 Server.cpp 文件中调用 tell 而言,accept() 函数永远不会返回。

任何帮助/指针表示赞赏。
在此先感谢,汤姆。

编辑代码可以在上面的 MSDN 链接上找到。在页面上向下滚动以获取客户端和服务器的代码。

0 投票
4 回答
14556 浏览

c++ - 对 getaddrinfo() 的所有调用均返回 11001

连接到我的网络上的设备时出现问题。每当我调用 getaddrinfo() 时,它都会返回 11001。我用 IP_ADDRESS 字符串(全局变量)中的许多不同 IP 对此进行了检查。我已经用 nslookup 检查了所有无法使用的数字,并且大多数都存在。

getaddrinfo-returns-always-11001-host-not-found 似乎在问一个类似的问题,但那里没有答案。

目前,我的代码甚至没有尝试连接到远程设备,只是尝试解析 IP。一旦可行,我就可以继续解决更大更混乱的问题。

执行:

大部分代码已从 msdn 网站上锁定和库存,但看起来一切正常。

0 投票
2 回答
461 浏览

c++ - 套接字未从客户端接收

但它没有收到任何东西,它从游戏客户端接受套接字,然后什么也没发生,为什么!!?

0 投票
2 回答
282 浏览

ip - 多个套接字是否“重复”数据?

我正在处理的应用程序需要跟踪另一个应用程序的连接性,这意味着检查另一个应用程序是否正在生成和接收 IP 流量。

我们没有其他应用程序的 API,因此通过 WinSock 跟踪 IP 流量。我们通过定义一个 RAW IP 套接字并将 IO 控制设置为 -

然后,我们从套接字异步读取数据并查看 IP 标头以查看流量​​属于被跟踪的应用程序。

出现了两个问题——

  1. 是否有另一种更好的方法来跟踪 IP 流量?具体来说,我们需要知道哪些主机向机器发送数据,向哪些主机发送数据,以及何时发送。
  2. 使用上述方法,截获的数据是否从目标应用程序“窃取”?还是目标应用程序将其插入其套接字而不会中断?

谢谢,
阿萨夫

0 投票
4 回答
7383 浏览

c++ - 将进程的 IO 重定向到 Windows 套接字

我是winsock的新手,我尝试编写一个接受新连接的服务器套接字,然后它调用一个外部可执行文件。我们如何将外部可执行文件的标准输入和标准输出重定向到已接受的客户端套接字。我用谷歌搜索并找到了下面的代码,但它不起作用。新进程创建成功,但客户端无法从新进程接收任何数据。我使用的是 Windows 7 和 Visual Studio 2008 Express 版本。任何帮助和意见表示赞赏。非常感谢!

服务器

客户端

外部程序 hello.cpp

0 投票
2 回答
9290 浏览

c - 在 WinSock 中处理异步套接字?

我正在使用消息窗口和 WSAAsyncSelect。如何使用一个消息窗口跟踪多个套接字(客户端)?