草庐IT

c++ - 如何在 C++ 中使用 winsock 接收 udp 数据包?

作为对udp套接字进行深入研究的尝试,我尝试从本教程页面移植代码http://www.linuxhowtos.org/C_C++/socket.htm到winsock(如果重要的话,在win8上运行)。[下面的直接链接]代码目前可以编译和运行,但我从未收到数据包,两个程序只是等待并阻塞在recvfrom()上。我一直遇到同样的问题(例如,此代码的修改版本https://stackoverflow.com/a/679529/873217包括recvfrom()调用。并使用此代码C++problemwithDatagram(UDP)winsockettosendtoandrecvfromo

C++ Winsock P2P

设想有没有人有使用Winsock在C++中进行点对点(p2p)网络的好例子?这是我对特别需要使用这项技术的客户的要求(天知道为什么)。我需要确定这是否可行。任何帮助将不胜感激。编辑我想避免使用库,以便我可以理解底层源代码并进一步了解我的知识。 最佳答案 由于我不知道您要查找什么信息,我将尝试描述如何设置套接字程序以及我遇到的陷阱。首先,阅读Winsocktutorial来自MSDN。这是连接、发送消息和断开连接的基本程序。非常适合了解套接字编程。有了这个,让我们开始:注意事项:阻塞或非阻塞首先,您需要确定您想要阻塞程序还是非阻塞程序

c++ - Winsock 的例子?

你们有什么推荐的winsock资源?我有一个任务,我们只有几天的时间来完成它需要使用UDP发送一个简单的数据包(并接收相同类型的数据包)。我对C#套接字相当熟悉,但对C++却一无所知。有任何提示或资源吗? 最佳答案 部分如下:WinsockProgrammingWinsockNetworkingTutorial(C++)WinSockTutorial 关于c++-Winsock的例子?,我们在StackOverflow上找到一个类似的问题: https://s

c++ - 为什么在包含 WinSock2.h 时会出现大量编译器错误?

这个问题在这里已经有了答案:C++RedefinitionHeaderFiles(winsock2.h)(15个答案)关闭6年前。我正在尝试使用C++中的WinSock2.h进行UDP泛洪攻击,但我在WinSock2.h上收到超过70个错误和17个警告,所有错误都是重新定义、来自ws2def.h的语法错误,以及“不同的联系”。我做错了什么或者这是WinSock2的问题吗?如果有任何用处,我使用的是64位Windows10、VisualStudio2015#include"stdafx.h"#include#include#include#include#include"wtypes.h

c++ - 将数据填充到本地的recv-Buffer中

我挂接到Windows中的send和recv函数。在某些情况下,我会修改将要发送和读取的数据。在send函数中,这很容易。我挂接到函数中,修改源缓冲区,然后将其传递给原始函数。但是对于recv函数来说,这个就比较复杂了。当我调用了原始的recv函数并决定添加更多数据时,我需要将数据插入本地队列,以便下一次调用recv会返回那些字节。有什么想法吗? 最佳答案 你的过滤器方法应该调用recv()然后将你的数据添加到缓冲区的末尾,调整返回的读取计数,然后返回它。无需“将数据推送到本地队列”。

c - 在 WinSock 中处理异步套接字?

我正在使用消息窗口和WSAAsyncSelect。如何使用一个消息窗口跟踪多个套接字(客户端)? 最佳答案 Windows支持socket操作的几种模式,你需要清楚自己使用的是哪一种:阻塞套接字。发送和接收block。非阻塞套接字:send和recv返回E_WOULDBLOCK,select()用于确定哪些套接字就绪异步套接字:WSAAsyncSelect-套接字将事件通知发布到HWND。EventSockets:WSAEventSelect-套接字信号事件。重叠套接字:WSASend和WSARecv通过传入OVERLAPPED结构

c++ - Winsock 错误代码 10014

stringSendRequestToServer(std::stringurl){structsockaddr_inaddr={0};structhostent*host=NULL;//IftheURLbeginswithhttp://,removeit.if(url.find("http://")==0)url.erase(0,7);//Getthehostname.stringhst=url.substr(0,url.find('/',0));url.erase(0,url.find("/",0));//Connecttothehost.host=gethostbyname(hs

c++ - 在 Windows XP 中是否有 inet_ntop/InetNtop 的替代品?

我正在尝试编译beej的网络编程实例指南,但是WindowsXP没有这样的功能。我正在使用mingw,如果它有任何不同的话。 最佳答案 从WinSock层:WSAAddressToString(ntop)WSAStringToAddress(pton) 关于c++-在WindowsXP中是否有inet_ntop/InetNtop的替代品?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

windows - 在 Win32 中,有没有办法测试套接字是否是非阻塞的?

在Win32中,有没有办法测试套接字是否是非阻塞的?在POSIX系统下,我会做类似下面的事情:intis_non_blocking(intsock_fd){flags=fcntl(sock_fd,F_GETFL,0);returnflags&O_NONBLOCK;}但是,Windows套接字不支持fcntl()。非阻塞模式是使用ioctl和FIONBIO来设置的,但似乎没有办法使用ioctl获取当前的非阻塞模式。我可以使用Windows上的其他一些调用来确定套接字当前是否处于非阻塞模式吗? 最佳答案 稍微长一点的回答是:不是,但你通

c++ - Winsock 重新定义错误

这个问题在这里已经有了答案:C++RedefinitionHeaderFiles(winsock2.h)(15个答案)关闭6年前。我正在VisualC++2010中编译一个项目,但我遇到了一些Winsock重新定义的问题。首先我得到:syntaxerror:identifier'SOCKADDR_STORAGE'但是如果我包含winsock或winsock2或ws2tcpip,我会得到很多这样的错误:errorC2011:'sockaddr':'struct'typeredefinitionerrorC2011:'WSAData':'struct'typeredefinitionerr