问题标签 [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 投票
3 回答
5896 浏览

c++ - XP和Vista之间使用winsock API的UDP组播差异

似乎是在 windows XP 和 windows vista 之间设置 UDP 多播套接字所需的实现发生了变化。具体来说:

  • 在 Windows XP 下,您必须先调用bind(),然后才能引用任何特定于多播的套接字选项。

  • 但是在windows vista下,处理多播套接字时一定不能调用。bind()

这两点中的任何一个失败都会导致运行时出现套接字错误。

我要疯了,还是其他人也看到了?有比 bind() 调用的条件编译更好的解决方案吗?

0 投票
2 回答
2585 浏览

sockets - 使用多个套接字,选择非阻塞还是阻塞更好?

假设我有一个服务器程序可以接受来自 10 个(或更多)不同客户端的连接。客户端随机发送数据,服务器接收到这些数据,但可以肯定的是,每次更新都会至少有一个客户端发送数据。服务器不能等待信息到达,因为它还有其他处理要做。除了使用异步套接字之外,我还看到了两个选项:

  1. 使所有套接字不阻塞。在一个循环中,调用recv()每个套接字并允许它失败,WSAEWOULDBLOCK如果没有可用的数据并且如果我碰巧得到了一些数据,那么保留它。

  2. 让套接字保持阻塞状态。将所有套接字添加到 aFD_SET并调用select(). 如果返回值不为零(大多数情况下是这样),则循环遍历所有套接字以找到适当数量的可读套接字,FD_ISSET()并仅调用recv()可读套接字。

第一个选项将创建更多对该recv()函数的调用。第二种方法从编程的角度来看是一个更大的痛苦,因为所有的FD_SETFD_ISSET循环。

首选哪种方法(或另一种方法)?是否避免让recv()非阻塞套接字失败的开销值得调用的麻烦select()

我想我理解这两种方法,并且我都成功地尝试过,但我不知道一种方法是否被认为更好或最优。

0 投票
2 回答
2572 浏览

java - xampp 服务器和 java 客户端/服务器应用程序

嗨,

我打算只开发一个小型网络应用程序,比如聊天。所以我下载了 xampp for windows 并安装了它(也作为服务),包括 mysql。好吧,我将 apache(和 mysql)作为服务启动,并在 java 中编写了短行:

但我直接得到了答案:

服务器正在运行。本地主机可在浏览器上访问。

我忘了什么吗?有任何想法吗?

0 投票
1 回答
3157 浏览

c++ - 如何在 Win32 上检索当前主机的 FQDN?

在 Win32 中检索当前主机的完全限定域名的最简单可靠的方法是什么?

我试过调用 gethostname(),但它返回一个 NetBIOS 名称。

0 投票
6 回答
1973 浏览

c++ - 为什么 Windows 在模拟其他用户时不允许启动 WinSock

如果使用 CreateProcessWithLogonW 或 CreateProcessAsUserW 创建进程,则使用我自己的程序或其他程序我无法在调用时运行 winsock。当我创建套接字时它返回此错误:

服务提供者初始化失败。

如果无法加载服务提供者的 DLL(LoadLibrary 失败)或提供者的 WSPStartup 或 NSPStartup 函数失败,则会返回此错误

.

但是,WSAStartup似乎没有错误。只需使用 WSASocket 创建套接字就会返回此内容。

更新:

错误:

LoadUserProfile:错误代码 2。找不到指定的文件

AdjustTokenPrivs:错误代码 5。访问被拒绝

0 投票
4 回答
2645 浏览

c++ - Winsock2:如何在 VC++ 中使用listen的积压一次只允许一个客户端连接

我想一次只允许来自我的 TCP 服务器的一个连接。你能告诉我,如何在没有积压长度为零的情况下使用监听。

我正在使用代码(如下所示),但是当我一个一个启动 2 个客户端时,两个客户端都已连接。我正在使用带有winsock2的VC++。

听(m_socket,-1);

将零作为积压传递也不起作用。

等待你的回复。

问候,
伊米

0 投票
2 回答
6759 浏览

c++ - 在 C++ 中检查 Socket 是否已关闭

我有一个小型应用程序,可以重定向另一个应用程序的标准输出/输入(通常是命令提示符或 Windows 的 bash)。问题是,如果连接被中断,我的进程不知道并且由于这条线它永远不会关闭:

我正在考虑使用这样的循环:

我将使用哪些功能来完成此操作?对于 ProcessIsDead,我知道有一个用于获取退出代码的 winapi,但我不知道如何在不调用 recv 的情况下检查套接字是否断开(我不能这样做)

0 投票
3 回答
596 浏览

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。

有任何想法吗?提前感谢您的任何提示。

0 投票
4 回答
47093 浏览

c++ - 如何同时支持 IPv4 和 IPv6 连接

我目前正在开发一个 UDP 套接字应用程序,我需要构建支持,以便 IPV4 和 IPV6 连接可以将数据包发送到服务器。

我希望有人可以帮助我并指出正确的方向;我发现的大部分文档都不完整。如果您能指出 Winsock 和 BSD 套接字之间的任何区别,那也会很有帮助。

提前致谢!

0 投票
2 回答
2125 浏览

c# - ASP.net (MVC) 和 Winsock

我正在使用 asp.net MVC。现在我不知道如何使用(win32 控制台命令行)将数据从服务器(使用 asp.net )发送到另一台服务器。请帮助我。

P/S:此方法是否存在安全漏洞。