问题标签 [winsock]

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 投票
2 回答
5752 浏览

c# - 如何在 C# 中获取消息?

如何获取有关特定方法的特定消息?

我看过一些例子,人们使用“ref”,但我不明白。

例如,在 delphi 中,我的函数(方法)必须在 Main Form 类中声明,并且在声明旁边我必须放置消息

我在 C# 中需要这个,所以我可以在我的应用程序中使用 WSAAsyncSelect

用赏金 550 声望检查>我的其他问题<以了解我的意思

0 投票
2 回答
3044 浏览

c# - 如何将 IntPtr/Int 转换为 Socket?

我想将 message.WParam 转换为 Socket。

如何将 IntrPtr(sock) 转换为 Socket,以便调用 Receive()?

0 投票
1 回答
15253 浏览

windows - 使用 Winsock 的原始以太网帧

我正在将一个通信库从 Linux 移植到 Windows。我知道我的方法在很大程度上是什么。该库使用所有原始以太网级帧进行所有通信。

我要移植的库使用了 PF_PACKET 系列和 struct sockaddr_ll。浏览 MSDN winsock 站点后,我没有找到等效的族/结构。我的方法应该是什么?

我有一些想法,但我不确定它们是否是好想法,我可以使用 PF_UNSPEC,未指定。我可以只传递 PF_PACKET 代表的数字(它是一个无符号短)我也可以在 Windows 中创建自己的 sockadddr_ll 结构。

这些想法对我来说似乎都不好,它们只是看起来不太可能奏效的黑客。

如果有人有任何建议,我将不胜感激。

0 投票
2 回答
3863 浏览

winsock - 在 Winsock 中实现原始以太网

我正在做一个项目,我必须制作自定义数据包。也就是说,我必须控制每个数据包标头。我正在尝试使用套接字来做到这一点。基本上,我需要做的是:

ethernet_type 是定制的、非标准的,例如 0xAAAA。我正在使用 htons()。另外,我最好不要使用winPcap。

现在,我收到错误 10043,不支持协议。

错误消息似乎表明我可以将协议配置到我的系统中,但我不知道该怎么做。

它说:

不支持协议。请求的协议尚未配置到系统中,或者不存在它的实现。例如,套接字调用请求 SOCK_DGRAM 套接字,但指定了流协议。

这里有几个不同的问题,所以如果有人有任何意见,我真的很感激。

0 投票
1 回答
1009 浏览

c# - C#:简单的 TCP 服务器问题

我试图在用来监听连接的套接字上发送一个数据包——我当然失败了。

我记得我用帕斯卡编码的日子,还有另一个我应该发送连接的套接字,它是在“接受”之后收到的。

好吧,如果这是正确的,那么这就是我的问题:

我在我的 TCP 服务器(C#)中使用 WSAAsyncSelect()

连接后,我必须向客户端发送一个数据包。

我如何获得必须将数据包发送到该客户端的套接字?

我没有调用 Accept(),因为我不知道在 C# 中应该如何完成,一直在寻找示例,但没有一个使用旧的 WSAAsyncSelect()。

请提供一个例子来说明它应该如何完成。

提前致谢!

0 投票
2 回答
3324 浏览

winforms - 为什么我的 winsock 控件在 Form_QueryUnload 的上下文中的 vb6 中无法正常运行?

我的目标是让这个程序在用户注销或关闭他们的电脑时发送一个注销命令。

该程序使用 Winsock 对象通过 tcp 套接字连接到服务器应用程序。呼叫singleSock.SendData "quit" & vbCrLf只是一种退出的方式。我将开始使用 Wireshark 捕获数据,但我想知道我是否试图做一些根本错误的事情。

奇怪的是,如果我将 Cancel 设置为 True,并允许我运行的计时器执行注销命令,然后调用另一个卸载,它可以工作,但是在测试此配置(不同的代码)时,这会阻止用户注销第一个时间。他们必须启动注销,它什么也没做,然后他们再次注销,我的程序在那时就消失了。同样奇怪的是,在 Vista 中,在短暂显示一个屏幕说我的程序阻止注销后注销。我的大部分部署都在 XP 上,它有两个注销问题。

0 投票
1 回答
557 浏览

winsock - closesocket 触发 WSARecvFrom 完成例程

我注意到,当我调用 closesocket 时,WSARecvFrom 的完成例程(到那时等待传入数据)正在被 dwError=0 和 cbTransferred=garbage 触发,尽管该套接字没有待处理的传入数据。

当我关闭套接字时,有什么方法可以不调用它?我试图在closesocket之前调用shutdown,但它没有帮助。

0 投票
2 回答
11465 浏览

c++ - C++ - 绕道 WinSock Hooking

我想要做的是使用Detours 库挂钩到应用程序 WinSock2 send() 和 recv() 函数(数据包记录器)。

虽然它适用于 send() 函数,但它不适用于 recv() 函数。

这是我的相关代码:

有任何想法吗?

编辑:所以我也连接了 recvfrom() 和 WSARecvEx(),但它仍然没有记录传出的数据包!我已经用我的确切代码更新了我的代码。

0 投票
1 回答
2792 浏览

c++ - Windows上套接字号的PID?

我需要计算各种应用程序从网络发送和接收的字节数。一开始我考虑使用 LSP,但是有很多应用程序根本不使用 LSP(例如 SMB)。这就是我写一个小嗅探器的原因。此应用程序在 IP 级别上工作,并使用 recvfrom 收集数据。

所以我有远程主机、本地和远程端口的地址。这很酷,但我还需要本地套接字所有者的 PID。那么,有没有简单的方法来获得这样的PID呢?解决方法是使用 GetTcpTable、GetUdpTable 或 AllocateAndGetUdpExTableFromStack 和 AllocateAndGetTcpExTableFromStack(这些函数在 2k、XP、XP SP2 和 Vista 之间存在很多差异)并查找结果表,但它似乎不优雅且效率低下......

那么有没有一种“GetPIDOfSocket”函数呢?解决方案应仅是 WinAPI(无 .net),因为可以使用各种语言,例如 C++、Delphi。