问题标签 [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.

0 投票
7 回答
7962 浏览

c++ - 如何在 C++ 中进行网络 IP 扫描?

我正在试验 C++ winsockets。我想创建一种方法,在不知道它的 IP 的情况下,我可以在网络上找到服务器。为此,我只需通过 IP 地址 192.168.1.0 到 192.168.1.255 循环我的连接方法。但是,每次连接之间的时间相当长,程序倾向于在 connect(nBytes, (sockaddr*)&server, sizeof(server)) 语句处等待至少 30 秒,如果不是更长的话。我的问题如下:为什么会发生这种情况,我该如何解决这个问题,是否有完全不同的更好的方法来查找服务器?

我的连接方法:

另外,请随时告诉我我在当前连接方法中做错的任何事情。

0 投票
3 回答
4649 浏览

c++ - 计算从客户端发送到服务器的数据包数量?

所以我几乎完成了一项涉及 Win32 编程和套接字的任务,但我必须生成和分析一些有关传输的统计信息。我唯一遇到的问题是如何计算从客户端发送到服务器的数据包数量。

发送的数据可以是可变长度的,所以我不能只将接收到的总字节数除以#define'd 值。

我们必须使用异步调用来做所有事情,所以我一直在尝试用我为服务器套接字获得的每条 FD_READ 消息增加一个计数器。但是,因为我必须能够接受可能很大的文件大小,所以我必须使用大约 64k 的缓冲区大小调用 recv/recvfrom。如果我发送一个小数据包(az),则没有问题。但是,如果我发送 1024 个字符的字符串 10 倍,服务器会报告收到 2 或 3 个数据包,但就发送/接收的字节而言,数据丢失率为 0%。

知道如何获取数据包的数量吗?

提前致谢 :)

0 投票
2 回答
615 浏览

sockets - “Microsoft Visual Studio 8\VC\PlatformSDK\Include\WinSock2”中是否有宽字符版本的 WSABUF 结构

winsock 中是否有宽字符版本的 WSABUF 结构?

我想在套接字上写日语数据。

0 投票
2 回答
398 浏览

delphi - 将 TServerSocket 应用程序从 D5 转移到 D2007 的任何陷阱?

我在谷歌上做了一个简短的搜索,什么也没找到,但我觉得我应该问一下。我并不真的期望会有什么,但宁愿现在问一个没有答案的问题,也不愿在一切都出错时问这个问题,发现每个人都知道一个“陷阱”......!

为了使整体支持/开发生活更轻松(并引入 madExcept 等),我将采用 D5 编写的半 GUI 应用程序(使用 NativeDB 连接到 ASA6)并将其移植到 D2007,最终将其转进入控制台应用程序和/或服务。(目前的 GUI 只不过是一个美化的开始/停止按钮和一个活动日志)。

它是一个经典的 TServerSocket 应用程序,监听指定的端口并在客户端连接时执行各种操作。我预计 NativeDB 方面不会出现任何大问题,但我想知道就 TServerSocket 而言,D5 和 D2007 之间是否有任何变化(错误修复、改进)?

我们不使用阻塞套接字、Indy 等——它只是来自 scktcomp 单元的 TServerSocket,直接来自 D5 Enterprise 框。除非 D2007 下的 TServerSocket 有问题,否则我不打算显着更改代码。:-)

0 投票
3 回答
37373 浏览

java - 追捕 java.net.SocketException:没有可用的缓冲区空间

嗨,我有一个非常丑陋的问题:java.net.SocketException:没有可用的缓冲区空间(达到最大连接数?)它是客户端-服务器应用程序。客户端是 Windows XP SP2 32b,带有两个网卡核心双核。Java 1.6。u7。应用程序为本地通信打开了几个服务器套接字,并为 rmi 到 jboss 服务器打开了几个客户端套接字。

几个小时/几天后!我无法打开任何新的客户端套接字来与服务器进行通信。服务器套接字仍然有效。

Windows netstat 显示从 130 到 150 的连接。手动尝试时,我在 ~3500 个连接后耗尽了缓冲区!

我试过了:

  • 检查我们使用的每个套接字,我们也关闭它。
  • 在后台运行 netstat 以监控打开的连接
  • 运行病毒扫描以发现任何恶意软件
  • 将 java 更新到 1.6 u16
  • 禁用第二个网络接口

  • 重新启动 java 后,我就可以打开新连接。

    整个例外:

    --edited
    我们终于解决了 snmp 服务器故障的问题。我在下面的评论中写下了我的笔记。感谢帮助。

    0 投票
    2 回答
    26314 浏览

    c++ - C++ Winsock P2P

    Scenario

    Does anyone have any good examples of peer-to-peer (p2p) networking in C++ using Winsock? It's a requirement I have for a client who specifically needs to use this technology (god knows why). I need to determine whether this is feasible.

    Any help would be greatly appreciated.

    EDIT

    And I would like to avoid using libraries so that I can understand the underlying source code and further my knoweldge.

    0 投票
    1 回答
    695 浏览

    c++ - 通过 tcp 传输的文件末尾的额外换行符

    我有两个程序,recvfile.py 和 sendfile.cpp。它们可以工作,只是我在新文件的末尾有一堆额外的换行符。我不知道额外的空间是如何到达那里的。我知道问题出在发件人方面,因为当我使用 python 的 sendall() 函数发送文件时不会发生同样的情况。

    以下是文件:

    jmm_sockets.c

    发送文件.cpp:

    最后,recvfile.py:

    0 投票
    4 回答
    2767 浏览

    networking - 使用winsock扫描局域网游戏服务器

    我正在尝试弄清楚如何使用 winsockets 将我的游戏变成 LAN 可玩游戏。我已经阅读了一些 winsockets 文档,但我无法弄清楚客户端如何获取在 LAN 上创建的所有游戏。

    它是否必须尝试“连接”到 LAN 上的每个 IP,例如尝试连接到 192.168.0.1,然后是 192.168.0.2 等?有没有更好的办法?

    0 投票
    2 回答
    2109 浏览

    c++ - 在 MFC 应用程序中未调用重叠的 WSARecv() 回调

    我有一个 COM 组件,用 C++ 和 ATL 实现,它使用重叠的套接字 I/O。与服务器建立连接后,它立即开始对套接字进行重叠读取,代码如下:

    我有一个看起来像这样的回调函数:

    此 COM 组件在单元测试中、在命令行应用程序中使用时以及在 .NET GUI 应用程序中使用时(通过 COM 互操作)都可以正常工作。但是,当我在 MFC 应用程序中使用此组件RecvCallback时,服务器向其发送数据时永远不会调用该组件。

    WSARecv()ReturnsSOCKET_ERRORWSAGetLastError()Returns WSA_IO_PENDING,正如异步重叠读取所期望的那样。

    当我使用 SysInternals TcpView 应用程序观察正在发生的事情时,它表明客户端正在接收数据。但是永远不会调用回调。

    通过连接的套接字向服务器发送数据工作正常。

    我正在调用CoInitializeEx()WSAStartup()在我的 MFC 应用程序的InitInstance()方法中。

    有任何想法吗?

    0 投票
    1 回答
    1931 浏览

    visual-c++ - 如何从 MFC (VC++) 中的给定 IP 获取域名?

    如何从 MFC (VC++) 中的给定 IP 获取域名?我正在使用的代码如下:

    此代码返回我的主机名 = 255.255.255.255 而不是域名。