问题标签 [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.
c++ - 包含线程后的 C++ 套接字错误 WSAENOTSOCK (10038)
我在客户端和服务器之间创建了 TCP 套接字连接。
我有必要使用线程,因为我从另一个进程获取 x 和 y 坐标,并使用 OpenGL 绘制这些值。
我想到的唯一方法是为OpenGL绘图创建线程,并使用主线程通过套接字接收坐标。
我的服务器端在添加之前工作得很好#include <thread>
,所以我不知道问题可能是什么,为什么我不能在使用套接字时使用线程。
包括线程后,调用后recv()
,我收到错误:
WSAENOTSOCK 10038
通过使用WSAGetLastError();
我认为该代码太长了,我无法发布它,因此我可以复制其中一些必要的部分。
编辑:创建套接字并等待连接的代码。
vb6 - 没有 Doevents 或子类的 VB6 TCP IP 通信
我需要维护的 VB6 应用程序如下所示。
- 通过以太网建立与已知地址和端口的连接。
发送请求
等待回复。
我尝试使用 WinSock 和 Winsock 替换,但它们都以一种或另一种形式依赖于各种 Windows 应用程序中固有的消息传递循环。我对 Winsock API 如何在 VB6(或任何其他语言)中实现上述算法知之甚少。
我的应用程序是一个 VB6 CAD/CAM 软件,它通过专用以太网控制金属切割机。该软件已经维护了 20 年,我们为不同类型的运动控制器开发了多种驱动程序。迄今为止,这些运动控制器的 API 包括
- 打开与硬件的连接
- 向硬件发送请求(例如轴的位置)
- 等待响应(通常以毫秒为单位)。
其中一些控制器通过以太网工作,但直到现在我才不必直接与端口交互。我使用公司提供的图书馆来处理事情。它们以我上面提到的方式工作,如果在某个定义的时间内没有发生响应,则会引发超时错误。
Winsock 的问题是我必须插入 DoEvents 才能得到响应。这会破坏我们在 VB6 应用程序中处理多任务的方式。像 CSocketMaster 这样的替代品使用子类化,这也会对我们的多任务处理造成严重破坏。
因此,有关如何使用 Winsock API 或第三方 dll 的任何帮助都可以完成我需要做的事情,如上所述。我不会问我是否还没有看到其他运动控制做我想做的事情。
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 程序?
任何帮助或已知文章都会很棒。
谢谢
c++ - 用于线程间通信的 Windows 套接字
我有一个线程等待阻塞调用(通过选择)并希望它同时与父线程通信。因为,当父母向它发送消息时,它可能参与阻塞调用,所以我不能使用 WaitForMultipleObjects。我想知道是否可以在子线程和父线程之间使用套接字,但所有文献都表明套接字最适合用于进程间而不是线程间通信。同时,我找不到它们可能不适合我的用例的原因。是否有任何我可能遗漏的东西,或者这种用例是否有其他解决方案。(寻找基于 c++ 的解决方案)
sockets - 阻塞 TCP 套接字的超时不工作
请注意:平台是Windows,而不是 Linux。
我有一个阻塞的 TCP 客户端套接字。连接远程服务器后,我设置了一个读取超时(因为远程服务器不稳定,网络条件不好),然后接收数据。
有时,recv()
函数永远不会返回,我的程序已经死了。
代码如下所示:
我在recv()
函数之前将套接字超时设置为 1 秒。理论上,这个recv()
过程永远不会超过 1 秒。但有时,它仍然需要超过 3 秒,然后出现 MessageBox。
为什么有时超时不起作用?
c++ - UDP 客户端到 UDP 服务器的问题,出现 10057 错误
我在连接到我的 UDP 服务器时遇到问题。在 VS 上,它没有显示任何错误,除非我进行错误检查时它给了我一个错误 10057。
UDP客户端:
UDP 服务器:
我已经先执行了客户端,没有问题,执行了服务器,然后是客户端,这就是它显示问题的时候。
c++ - C++ 套接字服务器不接受任何客户端/客户端无法连接
我有一个简单的类,它启动一个服务器并监听客户端,并在它们连接后为它们启动一个线程,我的问题是当我运行服务器时它似乎正在监听,而当我尝试使用简单的 python 代码连接服务器时不接受套接字。
显然,我认为问题出在客户端连接上,但是在尝试将地址从环回更改为我的本地地址后,我得到了相同的结果,所以我不确定是什么原因造成的。
服务器代码:
测试python代码:
我得到的唯一错误是[WinError 10061] No connection could be made because the target machine actively refused it
在我的客户端上,服务器一直在监听。
c++ - WSASend 会重新发送数据吗?
我正在维护一些使用 Windows 套接字将数据发送到 TCP 客户端的代码。
我看到 WSASend 只被调用一次。但是,wireshark 捕获的数据显示超时时进行了 2 次重复尝试。
我想知道,WSASend 本身是否实现了重试?