问题标签 [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++ - winsock 缺少数据 c++ win32
我正在编写一个需要通过网络发送数据的应用程序。我已完成申请,但发送数据时出现问题。每次发送一条数据,4个字符后就被截断,剩下的就是垃圾。该应用程序是我为一个学校项目编写的远程键盘记录器,它要求您演示钩子和winsock 的用法。我们可以在论坛上寻求帮助。任何帮助,将不胜感激!
这里的代码:
服务器:
客户:
posix - 在 Winsock 中混合文件句柄和套接字
我正在将一些代码从 BSD 套接字移植到 Winsock,但我不确定如何处理下面的情况。
我的原始应用程序在标准输入和网络套接字上运行一个选择:
尝试在 Winsock 中运行它会出现错误 10038 (WSAENOTSOCK),这是有道理的,因为 Linux 中的文件句柄 0 (stdin) 不是 Windows 中的套接字(更准确地说:SOCKET 类型)。
有没有一种简单的方法可以将此测试移植到 Windows 套接字?
c++ - winsock2 的替代品,带有 C++ 中的示例服务器源
我正在使用在http://tangentsoft.net/wskfaq/examples/basics/select-server.html找到的这个示例实现
这完成了我需要的大部分工作,处理连接而不阻塞,并且在其线程中完成所有工作(不像某些示例那样为每个连接创建一个新线程),但我很担心,因为我被告知 winsock 只会支持最多 64 个客户端连接:S
这64个连接是真的吗?
我还有什么其他选择?有一个类似实现的 c++ 示例会很酷。
谢谢
java - 在 C 中实现 Java 的 getResponseCode()?
如果有帮助,C#的WebRequest中也有一个类似的类。虽然我不想在 java 或 .NET 中使用它,但我想知道如何在本机 C/C++ 代码(对于 Windows)中实现它。
以供参考:
打印出来:
意思是“好的”
我知道我可能需要使用套接字并发送一个用户代理字符串,但我不知道从哪里开始。每当我学习一门新语言时,我喜欢做的第一件事就是尝试将我的代码移植到它上面,但是这个让我很难过。
任何帮助表示赞赏
windows - 当请求的缓冲区大小大于可用数据量时,为什么 recv 会失败?
TCP 传输堆栈的基础是他们的作者有时记录的许多缓冲区限制。在 WinXP SP3 上,我认为我遇到过其中之一,但不知道为什么。
我已经实现了一个简单的客户端来从服务器获取数据(由一位同事用 Java 编写)。该协议是将数据的长度(按网络顺序)写入四个字节,然后写入数据。服务器将数据以 1024 字节块的形式写入 TCP 流。客户端正确接收到数据缓冲区的长度,分配内存并循环重复调用recv获取所有数据:
如果我将 TCP_BlockSize 设置为 4095 或更低,一切都很好,我可以接收数兆字节的传输。当我尝试 4096 大小的接收块时,对剩余数据的最后一个请求,即 len - currentLen < TCP_BlockSize,总是失败,返回值为 -1,errno = 0。我尝试了一些实验,比如修剪传输的数据在 815054 和 834246 字节之间,对于 4096 字节的接收块,一切都变得繁荣起来。
另一个细节:服务器在发送最后一个字节后关闭套接字。这就引出了一个问题,为什么不返回剩余的数据?在流为空并关闭之前不从recv返回-1感觉像是一种缺陷,因为当流不为空并且关闭以从recv接收-1时这是不明确的。
那么如何获取最后的数据呢?
c - 解锁连接到套接字会导致上下文切换吗?
我正在使用 winsock 并调用connect
非阻塞套接字。当 CPU 被其他进程占用时,我偶尔会在函数返回之前看到一些延迟(最多 200 毫秒)。据我所知,connect
非阻塞套接字上的 a 应该立即返回,但可能connect
会导致上下文切换,并且由于 CPU 正在努力工作,我的线程需要一段时间才能再次获得 CPU 时间并退出函数。
我知道(或至少相当肯定)connect
阻塞套接字会导致上下文切换,但非阻塞套接字会导致上下文切换connect
吗?
c# - Error 10048 when trying to open TcpChannel
I'm pretty inexperienced in Remoting. I'm trying to use it and keep receiving WinSock error 10048 when opening TcpChannel.
I use the simplest code from MSDN:
When ran for the first time, it work and quit correctly, but for second and so on I keep receiving error 10048, like socket 9090 is already in use. Netstat -a do not show port 9090 at all, like it was closed already.
What am I doing wrong?
visual-c++ - 为什么 bind() 返回 SOCKET_ERROR
没有:
- MFC
- ATL
使用纯 C++,WSAGetLastError()返回10014 - 错误地址
- 我错过了什么/做错了什么?
代码说明:
c++ - 主机名未使用 Winsock 转换为 IP 地址
getaddrinfo()
不会将主机名转换为 IP 地址,因此也不会connect()
转换为服务器。我的实现有问题吗 - 编译时没有警告消息?
这个函数调用是否connect
正确?
下面列出了完整的实现:
winapi - 如何区分 Win32 套接字句柄和其他管道句柄?
我需要确定我的代码未创建的句柄是否GetFileType()==FILE_TYPE_PIPE
是套接字。似乎没有用于此的 API。
我尝试了以下方法。总体思路是使用特定于套接字的函数,并将失败视为非套接字。
getsockopt()
——这是我的第一次尝试。不幸的是,当被同一个(非套接字)句柄上的许多线程调用时,它似乎挂起。WSAEnumNetworkEvents()
-- 这就是 Gnulib 所做的,但如果句柄是套接字,则会产生不良的副作用。getpeername()
- 这就是 cygwin 所做的,但对于某些套接字也会失败。猜测错误是否意味着套接字性似乎并不可靠且未来安全。
我不介意该解决方案是否仅适用于某些版本的 Windows,例如 Vista,在一般情况下我总是可以使用其他方法。