问题标签 [wsaasyncselect]

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 回答
762 浏览

c# - 如何在 C# 中使用 WinAPI 中的 WSAAsyncSelect?

我厌倦了 .NET BeginRead、EndRead 的东西。我很想像以前在 Delphi/C++ 中那样使用 WSAAsyncSelect

是否可以在 C# 中设置该事件?

0 投票
1 回答
1455 浏览

winapi - 如何正确使用 WSAAsyncSelect?

我在这里问了很多关于 WSAAsyncSelect 和 NET 的问题。几个月前,我什至在赏金上花了 500 个代表并自己回答(我做了一个包装器)。最后我习惯了框架中的 winsock。

今天我问的是非托管语言,不好的一点是我错过了使用套接字做事的框架方式。我正在用 Delphi 编写我的项目,但我理解类 C 语言,所以没问题,我' 甚至不要求任何代码。我喜欢自然的东西,所以请不要建议任何组件,只有纯代码。:)

人们说最好创建另一个隐藏表单并在那里设置消息循环以正确使用 AsyncSelect。

好吧,我的问题很简单:我把我写的整个winsock函数放在那个隐藏的表单里让我的生活更轻松,我还用它的句柄设置了WSaAsyncSelect,消息循环也在那里,但是我写了子类(很多类,巨大的代码),父类是隐藏的形式。

WSAAsyncSelect 是线程安全的吗?这会减慢事情的速度(我在课堂上做了什么)?

我必须在消息循环之外创建线程吗?

任何其他正确使用 AsyncSelect 的技巧将不胜感激。

编辑:为避免任何误解,我直接询问 AsyncSelect()。我从事的项目需要 2 个服务器和 1 个客户端,我认为可以通过该调用很好地处理它们。

0 投票
1 回答
727 浏览

c++ - Winsock WSAAsyncSelect 在没有无限缓冲区的情况下发送

这更像是一个设计问题,而不是一个特定的代码问题,我确信我错过了明显的,我只需要另一双眼睛。

我正在编写一个基于 WSAAsyncSelect 的多客户端服务器,每个连接都成为我编写的连接类的一个对象,其中包含相关的设置和缓冲区等。

我的问题涉及 FD_WRITE,我了解它的运作方式:在建立连接后立即发送一个 FD_WRITE。此后,您应该发送,直到收到 WSAEWOULDBLOCK 为止,此时您将剩余要发送的内容存储在缓冲区中,并等待被告知可以再次发送。

这是我遇到问题的地方,我在每个连接对象中使这个保持缓冲区有多大?直到收到新的 FD_WRITE 的时间量是未知的,在此期间我可能会尝试发送很多东西,一直添加到我的传出缓冲区。如果我使缓冲区动态化,那么无论出于何种原因,内存使用可能会失控,我无法发送()并减少缓冲区。

所以我的问题是您通常如何处理这种情况?请注意,我不是在谈论 winsock 使用的网络缓冲区本身,而是我自己创建的用于“排队”发送的一个。

希望我解释得很好,谢谢大家!

0 投票
1 回答
1601 浏览

c - WM_SOCKET ... FD_READ 没有响应

0 投票
0 回答
184 浏览

delphi - delphi wsaasyncselecy 在 Windows 服务应用程序中不起作用

我用 Winsock 编写服务应用程序。我想要异步套接字。在 TThread in Execute 我有示例代码:

这不起作用:

我不知道为什么。我的服务在此acccept()上被阻止,当我有连接时,我的循环执行一次,然后被阻止。我在普通应用程序中检查了我的代码,一切正常。

0 投票
1 回答
167 浏览

c++ - WSAAsyncSelect 并从另一个线程发送

我正在使用 C++ 和 Winsock 创建一个 TCP 客户端。我创建了一个仅消息窗口,它将处理我使用 WSAAsyncSelect 注册的 WM_SOCKET 消息。

我的问题如下:我需要从另一个线程(我的应用程序的 GUI 线程)发送数据,我可以安全地从该线程调用“发送”函数,或者我是否需要按顺序使用一些锁定接口(互斥体)发送数据?

0 投票
2 回答
3320 浏览

react-select - AsyncSelect:如何设置初始值?

我正在使用 AsyncSelect 并且需要根据外部逻辑更改组件的值。例如,我有这个简单的组件:

有没有办法设置它的初始值?我想过使用道具,但我不知道如何执行 onChange 事件,因为这会加载选项数组并设置标签和值。

0 投票
1 回答
169 浏览

c++ - 在 1 server-n clients socket c++ mfc application 中更新数据的客户端

我用 mfc 做了一个简单的检查登录程序。我使用 WSAAsyncselect 函数来创建一个非阻塞套接字。每次有人登录时,服务器都会向所有当前客户端发送一条消息“用户 x 已登录”,然后他们将在他们的消息日志中显示该消息。

通常,在将数据发送到服务器后,我只能从调用 WSAAsyncselect 函数的按钮更新值。例如

在服务器上,我有这个

在服务器向这些客户端发送数据后,无论如何都会自动更新数据

0 投票
0 回答
151 浏览

linux - 将 windows 套接字程序移植到 Linux [ WSAAsyncSelect 和 CreateWindow]

我正在尝试将 Windows 中的旧版 Delphi 代码移植到 Linux。但是我很难在 Linux 中找到相当于少数 Windows 功能的功能。目前我有一个使用winsock进行套接字操作的代码块,代码大纲如下(由于安全原因,我无法发布实际的整个代码)。因此,任何关于如何在 Linux 中实现相同功能的建议(不一定适用于 Delphi,但可以在 C/C++ 中)都会有很大帮助。

我对以下代码的理解是,线程创建一个窗口并等待消息 WM_USER ,稍后当程序创建套接字时,一旦在 FD_READ 或 FD_WRITE 或 FD_ACCEPT 或 FD_CONNECT 中发生任何事件,程序就会注册套接字以发送 WM_USER 消息或 FD_CLOSE。一旦套接字具有列表中提到的任何事件,它就会发送 WM_USER 消息,并且窗口处理程序会处理此消息。所以我的问题是,当我将程序移植到 Linux 时,如何在 Linux 中实现类似的功能?