问题标签 [winsockets]

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 投票
1 回答
1854 浏览

c++ - 包含线程后的 C++ 套接字错误 WSAENOTSOCK (10038)

我在客户端和服务器之间创建了 TCP 套接字连接。

我有必要使用线程,因为我从另一个进程获取 x 和 y 坐标,并使用 OpenGL 绘制这些值。

我想到的唯一方法是为OpenGL绘图创建线程,并使用主线程通过套接字接收坐标。

我的服务器端在添加之前工作得很好#include <thread>,所以我不知道问题可能是什么,为什么我不能在使用套接字时使用线程。

包括线程后,调用后recv(),我收到错误:

WSAENOTSOCK 10038

通过使用WSAGetLastError();

我认为该代码太长了,我无法发布它,因此我可以复制其中一些必要的部分。

编辑:创建套接字并等待连接的代码。

0 投票
4 回答
2927 浏览

vb6 - 没有 Doevents 或子类的 VB6 TCP IP 通信

我需要维护的 VB6 应用程序如下所示。

  1. 通过以太网建立与已知地址和端口的连接。
  2. 发送请求

  3. 等待回复。

我尝试使用 WinSock 和 Winsock 替换,但它们都以一种或另一种形式依赖于各种 Windows 应用程序中固有的消息传递循环。我对 Winsock API 如何在 VB6(或任何其他语言)中实现上述算法知之甚少。

我的应用程序是一个 VB6 CAD/CAM 软件,它通过专用以太网控制金属切割机。该软件已经维护了 20 年,我们为不同类型的运动控制器开发了多种驱动程序。迄今为止,这些运动控制器的 API 包括

  1. 打开与硬件的连接
  2. 向硬件发送请求(例如轴的位置)
  3. 等待响应(通常以毫秒为单位)。

其中一些控制器通过以太网工作,但直到现在我才不必直接与端口交互。我使用公司提供的图书馆来处理事情。它们以我上面提到的方式工作,如果在某个定义的时间内没有发生响应,则会引发超时错误。

Winsock 的问题是我必须插入 DoEvents 才能得到响应。这会破坏我们在 VB6 应用程序中处理多任务的方式。像 CSocketMaster 这样的替代品使用子类化,这也会对我们的多任务处理造成严重破坏。

因此,有关如何使用 Winsock API 或第三方 dll 的任何帮助都可以完成我需要做的事情,如上所述。我不会问我是否还没有看到其他运动控制做我想做的事情。

0 投票
2 回答
794 浏览

c - 连接到 xampp 服务器上的 index.php 的 C 程序

我正在寻找一个可以与在本地 XAMPP 服务器上运行的 index.php 文件进行通信的 C 客户端。

所有在线教程都是基于创建 C 客户端并连接到 C 服务器。但是如何将 C 客户端连接到 xampp 服务器上的 PHP 文件?

我是否需要在 C 客户端和 index.php 文件中使用 PHP 中的套接字打开套接字?或者我可以在 C 程序中打开一个套接字并将其指向 localhost/index.php 吗?

C 客户端将侦听来自托管 index.php 的服务器的 HTTP 消息。index.php 文件将包含一个 html 表单,我可以在其中输入一个句子,然后 C 程序会将该句子打印到计算机终端中。

是否可以将C程序连接到服务器。然后使用 index.php 表单中的 exec() 命令作为 POST 请求,并通过套接字将其发送到 C 程序?

任何帮助或已知文章都会很棒。

谢谢

0 投票
3 回答
581 浏览

c++ - 用于线程间通信的 Windows 套接字

我有一个线程等待阻塞调用(通过选择)并希望它同时与父线程通信。因为,当父母向它发送消息时,它可能参与阻塞调用,所以我不能使用 WaitForMultipleObjects。我想知道是否可以在子线程和父线程之间使用套接字,但所有文献都表明套接字最适合用于进程间而不是线程间通信。同时,我找不到它们可能不适合我的用例的原因。是否有任何我可能遗漏的东西,或者这种用例是否有其他解决方案。(寻找基于 c++ 的解决方案)

0 投票
0 回答
53 浏览

c# - 为什么net.socket.connect在Win10下不起作用(在win7下工作)?

使用此代码

在win7下连接到另一台电脑可以正常工作。

Win10会报错: 在此处输入图像描述

翻译:无法建立连接,因为目标计算机拒绝连接。

知道如何解决问题吗?

编辑:防火墙关闭,ping 工作正常,我使用不同的 IP4 地址,服务器正在运行(并且正确回答了 win7 机器)。

在此先感谢彼得

0 投票
1 回答
658 浏览

sockets - 阻塞 TCP 套接字的超时不工作

请注意:平台是Windows,而不是 Linux。

我有一个阻塞的 TCP 客户端套接字。连接远程服务器后,我设置了一个读取超时(因为远程服务器不稳定,网络条件不好),然后接收数据。

有时,recv()函数永远不会返回,我的程序已经死了。

代码如下所示:

我在recv()函数之前将套接字超时设置为 1 秒。理论上,这个recv()过程永远不会超过 1 秒。但有时,它仍然需要超过 3 秒,然后出现 MessageBox。

为什么有时超时不起作用?

0 投票
1 回答
553 浏览

c++ - UDP 客户端到 UDP 服务器的问题,出现 10057 错误

我在连接到我的 UDP 服务器时遇到问题。在 VS 上,它没有显示任何错误,除非我进行错误检查时它给了我一个错误 10057。

UDP客户端:

UDP 服务器:

我已经先执行了客户端,没有问题,执行了服务器,然后是客户端,这就是它显示问题的时候。

0 投票
1 回答
988 浏览

c++ - C++ 套接字服务器不接受任何客户端/客户端无法连接

我有一个简单的类,它启动一个服务器并监听客户端,并在它们连接后为它们启动一个线程,我的问题是当我运行服务器时它似乎正在监听,而当我尝试使用简单的 python 代码连接服务器时不接受套接字。

显然,我认为问题出在客户端连接上,但是在尝试将地址从环回更改为我的本地地址后,我得到了相同的结果,所以我不确定是什么原因造成的。

服务器代码:

测试python代码:

我得到的唯一错误是[WinError 10061] No connection could be made because the target machine actively refused it在我的客户端上,服务器一直在监听。

0 投票
0 回答
17 浏览

c++ - WSASend 会重新发送数据吗?

我正在维护一些使用 Windows 套接字将数据发送到 TCP 客户端的代码。

我看到 WSASend 只被调用一次。但是,wireshark 捕获的数据显示超时时进行了 2 次重复尝试。

我想知道,WSASend 本身是否实现了重试?

0 投票
1 回答
54 浏览

c++ - 移植到 Windows 套接字

我正在尝试移植一些遗留代码并注意到一些问题。

我已经隔离了一个简单示例的代码。下面的套接字创建代码有什么问题?

在此处输入图像描述