问题标签 [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.
c++ - XP和Vista之间使用winsock API的UDP组播差异
似乎是在 windows XP 和 windows vista 之间设置 UDP 多播套接字所需的实现发生了变化。具体来说:
在 Windows XP 下,您必须先调用
bind()
,然后才能引用任何特定于多播的套接字选项。但是在windows vista下,处理多播套接字时一定不能调用。
bind()
这两点中的任何一个失败都会导致运行时出现套接字错误。
我要疯了,还是其他人也看到了?有比 bind() 调用的条件编译更好的解决方案吗?
sockets - 使用多个套接字,选择非阻塞还是阻塞更好?
假设我有一个服务器程序可以接受来自 10 个(或更多)不同客户端的连接。客户端随机发送数据,服务器接收到这些数据,但可以肯定的是,每次更新都会至少有一个客户端发送数据。服务器不能等待信息到达,因为它还有其他处理要做。除了使用异步套接字之外,我还看到了两个选项:
使所有套接字不阻塞。在一个循环中,调用
recv()
每个套接字并允许它失败,WSAEWOULDBLOCK
如果没有可用的数据并且如果我碰巧得到了一些数据,那么保留它。让套接字保持阻塞状态。将所有套接字添加到 a
FD_SET
并调用select()
. 如果返回值不为零(大多数情况下是这样),则循环遍历所有套接字以找到适当数量的可读套接字,FD_ISSET()
并仅调用recv()
可读套接字。
第一个选项将创建更多对该recv()
函数的调用。第二种方法从编程的角度来看是一个更大的痛苦,因为所有的FD_SET
和FD_ISSET
循环。
首选哪种方法(或另一种方法)?是否避免让recv()
非阻塞套接字失败的开销值得调用的麻烦select()
?
我想我理解这两种方法,并且我都成功地尝试过,但我不知道一种方法是否被认为更好或最优。
java - xampp 服务器和 java 客户端/服务器应用程序
嗨,
我打算只开发一个小型网络应用程序,比如聊天。所以我下载了 xampp for windows 并安装了它(也作为服务),包括 mysql。好吧,我将 apache(和 mysql)作为服务启动,并在 java 中编写了短行:
但我直接得到了答案:
服务器正在运行。本地主机可在浏览器上访问。
我忘了什么吗?有任何想法吗?
c++ - 如何在 Win32 上检索当前主机的 FQDN?
在 Win32 中检索当前主机的完全限定域名的最简单可靠的方法是什么?
我试过调用 gethostname(),但它返回一个 NetBIOS 名称。
c++ - 为什么 Windows 在模拟其他用户时不允许启动 WinSock
如果使用 CreateProcessWithLogonW 或 CreateProcessAsUserW 创建进程,则使用我自己的程序或其他程序我无法在调用时运行 winsock。当我创建套接字时它返回此错误:
服务提供者初始化失败。
如果无法加载服务提供者的 DLL(LoadLibrary 失败)或提供者的 WSPStartup 或 NSPStartup 函数失败,则会返回此错误
.
但是,WSAStartup
似乎没有错误。只需使用 WSASocket 创建套接字就会返回此内容。
更新:
错误:
LoadUserProfile:错误代码 2。找不到指定的文件
AdjustTokenPrivs:错误代码 5。访问被拒绝
c++ - Winsock2:如何在 VC++ 中使用listen的积压一次只允许一个客户端连接
我想一次只允许来自我的 TCP 服务器的一个连接。你能告诉我,如何在没有积压长度为零的情况下使用监听。
我正在使用代码(如下所示),但是当我一个一个启动 2 个客户端时,两个客户端都已连接。我正在使用带有winsock2的VC++。
听(m_socket,-1);
将零作为积压传递也不起作用。
等待你的回复。
问候,
伊米
c++ - 在 C++ 中检查 Socket 是否已关闭
我有一个小型应用程序,可以重定向另一个应用程序的标准输出/输入(通常是命令提示符或 Windows 的 bash)。问题是,如果连接被中断,我的进程不知道并且由于这条线它永远不会关闭:
我正在考虑使用这样的循环:
我将使用哪些功能来完成此操作?对于 ProcessIsDead,我知道有一个用于获取退出代码的 winapi,但我不知道如何在不调用 recv 的情况下检查套接字是否断开(我不能这样做)
windows - 最小 Winsock2 应用程序的性能调试网络吞吐量
我有一个非常简单的 Winsock2 TCP 客户端——下面是完整的列表——它只会发送一堆字节。但是,它在网络上运行非常缓慢;数据只是涓涓细流。
这是我尝试并发现的(两台 Windows PC 都在同一个 LAN 上):
- 从一台机器到另一台机器运行这个应用程序很慢 - 发送 8MB 需要大约 50 秒。
- 两个不同的服务器——netcat 和一个自定义编写的服务器(就像下面的客户端一样简单)——产生了相同的结果。
- taskmgr 显示几乎没有使用 CPU 和网络。
- 在同一台机器上与服务器一起运行这个应用程序很快 - 发送 8MB 需要大约 1-2 秒。
- 另一个客户端 netcat 工作得很好——发送 20MB 的数据大约需要 7 秒。(我用的是 Cygwin 自带的 nc。)
- 改变缓冲区大小(1*4096、16*4096 和 128*4096)几乎没有区别。
- 在不同 LAN 上的 Linux 机器上运行几乎相同的代码工作得很好。
- 在调用周围添加一堆打印语句
send
表明我们大部分时间都在阻塞它。 - 在服务器端,我们看到一堆 <= 4K 块的接收(不管发送方推送的缓冲区大小)。但是,其他客户端也会发生这种情况,例如全速运行的 netcat。
有任何想法吗?提前感谢您的任何提示。
c++ - 如何同时支持 IPv4 和 IPv6 连接
我目前正在开发一个 UDP 套接字应用程序,我需要构建支持,以便 IPV4 和 IPV6 连接可以将数据包发送到服务器。
我希望有人可以帮助我并指出正确的方向;我发现的大部分文档都不完整。如果您能指出 Winsock 和 BSD 套接字之间的任何区别,那也会很有帮助。
提前致谢!
c# - ASP.net (MVC) 和 Winsock
我正在使用 asp.net MVC。现在我不知道如何使用(win32 控制台命令行)将数据从服务器(使用 asp.net )发送到另一台服务器。请帮助我。
P/S:此方法是否存在安全漏洞。