Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Winsock编程- WsaGetSelectError,

Winsock编程- WsaGetSelectError,
EN

Stack Overflow用户
提问于 2012-12-19 19:12:06
回答 1查看 710关注 0票数 0

我的Winsock编程有一点小问题,我正在尝试集成一个能够在两个客户端之间传递数据的图形界面。

基本上,按下C并执行第一段代码,然后我将得到一个“套接字错误”,这是由我在这里的第二段代码中的MsgBox给出的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
case 'C':
{
    if(!Connected)
    {
        connect(s,(LPSOCKADDR)&me,sa_size);
        break;
    }
}

case WM_SOCKET:
    if (WSAGETSELECTERROR(lParam))
    {
        cout << "Socket error\n";
        WSAGetLastError();
        MessageBox (hwnd,"Socket Error123","Information",MB_OK);
        PostQuitMessage (0);
        return 0;
    }

我真的不知道该怎么解决这个问题,我一直无法找到任何关于向我目前拥有的网络代码中添加图形界面的帮助(它在没有实现图形部分的情况下工作),只是在寻找我能找到的任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2012-12-19 22:36:50

Connected为true时,'C'处理程序缺少break/return语句;当WSAGETSELECTERROR()返回0时,WM_SOCKET处理程序缺少break/return语句。

而且,在WM_SOCKET中,WSAGetLastError()是没有意义的。您必须使用WSAGETSELECTERROR()报告的错误代码。

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
case 'C':
{
    if (!Connected)
        connect(s,(LPSOCKADDR)&me,sa_size);
    break;
}

case WM_SOCKET:
    if (WSAGETSELECTERROR(lParam))
    {
        std::cout << "Socket error " << WSAGETSELECTERROR(lParam) << " on Event " << WSAGETSELECTEVENT(lParam) << std::endl;
        MessageBox (hwnd, TEXT("Socket Error"), TEXT("Information"), MB_OK | MB_ICONERROR);
        PostQuitMessage (0);
        return 0;
    }
    break;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13959446

复制
相关文章
winsock库
加载Winsock库函数 : WSAStartup 1 int WSAStartup( 2 WORD wVersionRequested,//指定想要加载的winsock库 3 LPWSADATA lpWSAData//指向 WSADATA的指针,用来返回DLL库的详细信息 4 ); WSADat头结构 1 typedef struct WSAData 2 { 3 WORD wVersion; //库文件建议应用程序使用的版本
用户1154259
2018/01/17
6470
WinSock Socket 池
之前在WinSock2.0 API 中说到,像DisConnectEx 函数这样,它具有回收SOCKET的功能,而像AcceptEx这样的函数,它不会自己在内部创建新的SOCKET,需要外部传入SOCKET作为传输数据用的SOCEKT,使用这两个函数,我们可以做到,事先创建大量的SOCKET,然后使用AcceptEx函数从创建的SOCKET中选择一个作为连接用的SOCKET,在不用这个SOCKET的时候使用DisConnectEx回收。这样的功能就是一个SOCKET池的功能。
Masimaro
2018/08/31
1.2K0
WinSock学习笔记(一)
Socket(套接字) ◆先看定义: typedef unsigned int u_int; typedef u_int SOCKET; ◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。 ◆Socket有五种不同的类型: 1、流式套接字(stream socket) 定义: #define SOCK_STREAM 1  流式套接字提供了双向、有序的、无重复的以及无记录边界的数据流服务,适合处理
逍遥剑客
2018/05/21
1K0
WinSock WSAEventSelect 模型
在前面我们说了WSAAsyncSelect 模型,它相比于select模型来说提供了这样一种机制:当发生对应的IO通知时会立即通知操作系统,并调用对应的处理函数,它解决了调用send和 recv的时机问题,但是它有一个明显的缺点,就是它必须依赖窗口。对此WinSock 提供了另一种模型 WSAEventSelect
Masimaro
2018/08/31
1.2K0
Winsock协议目录
SPI提供3种协议: 1 分层协议     在基础协议的上层,依靠底层基础协议实现更高级的通信服务。 2 基础协议     能够独立安全地,和远程断电实现数据通信的协议,相对于分层协议而言的  3 协议连     将一系列的基础协议,分层协议按特定的顺序连接在一起的链状结构。 协议特性:   winsock用WSAPROTOCOL_INFO结构描述特定协议的完整信息。称为一个winsock目录入口。   两个重要标识: ProviderId:服务开发商提供的全局唯一标识 dwCatalogEntr
用户1154259
2018/01/17
1.3K0
Winsock协议目录
WinSock2 API
title: WinSock2 API tags: [WinSock, 网络编程, WinSock2.0 API, 动态加载, WinSock 异步函数] date: 2018-07-21 10:36:09 categories: Windows 网络编程 keywords: WinSock, 网络编程, WinSock2.0 API, 动态加载, WinSock 异步函数 --- WinSock中提供的5种网络模型已经可以做到很高效了,特别是完成端口,它的高效的原因在于它不仅另外开启了线程来处理完成通知而不是占用主程序的时间,同时也在于我们在完成端口中运用了大量异步IO处理函数。比如WSASend、WSARecv等等。为了高效的处理网络IO,WinSock提供了大量这样的异步函数。这篇博文主要探讨这些函数的用法和他们与传统的巴克利套接字相比更加高效的秘密
Masimaro
2018/08/31
1.1K0
WinSock2 API
WSAAsyncSelect 消息模型
select 模型虽然可以管理多个socket,但是它涉及到一个时机的问题,select模型会针对所管理的数组中的每一个socket循环检测它管理是否在对应的数组中,从时间复杂度上来说它是O(n^2)的,而且还有可能发生数组中没有socket处于待决状态而导致本轮循环做无用功的情况,针对这些问题,winsock中有了新的模型——WSAAsyncSelect 消息模型 消息模型的核心是基于Windows窗口消息获得网络事件的通知,Windows窗口是用来与用户交互的,而它并不知道用户什么时候会操作窗口,所以Windows窗口本身就是基于消息的异步通知,网络事件本身也是一个通知消息,将二者结合起来可以很好的使socket通知像消息那样当触发通知时调用窗口过程。这样就解决了select中的时机问题和里面两层循环的问题 WSAAsyncSelect函数原型如下:
Masimaro
2018/08/31
6010
Windows网络编程
我写这个专题的目的,一方面是为了通过对网络编程再一次系统的总结,提高自己的网络编程水平,特别是Windows下的网络编程水平。同一时候,我也希望,能为众多初学网络编程的人提供一点帮助,由于我開始学习网络编程的时候,能找到的资料就非常少。当然,花钱能够买到翻译版本号的书:)
全栈程序员站长
2021/12/09
9290
WinSock 重叠IO模型
title: WinSock 重叠IO模型 tags: [WinSock 模型, 网络编程, 重叠IO模型] date: 2018-06-29 20:26:13 categories: Windows 网络编程 keywords: WinSock 模型, 网络编程, 重叠IO模型 --- 之前介绍的WSAAsyncSelect和WSAEvent模型解决了收发数据的时机问题,但是网卡这种设备相比于CPU和内存来说仍然是慢速设备,而调用send和recv进行数据收发操作仍然是同步的操作,即使我们能够在恰当的时机调用对应的函数进行收发操作,但是仍然需要快速的CPU等待慢速的网卡。这样仍然存在等待的问题,这篇博文介绍的重叠IO模型将解决这个等待的问题
Masimaro
2018/08/31
1.9K0
WinSock 完成端口模型
之前写了关于Winsock的重叠IO模型,按理来说重叠IO模型与之前的模型相比,它的socket即是非阻塞的,也是异步的,它基本上性能非常高,但是它主要的缺点在于,即使我们使用历程来处理完成通知,但是我们知道历程它本身是在对应线程暂停,它借用当前线程的线程环境来执行完成通知,也就是说要执行完成通知就必须暂停当前线程的工作。这对工作线程来说也是一个不必要的性能浪费,这样我们自然就会想到,另外开辟一个线程来执行完成通知,而本来的线程就不需要暂停,而是一直执行它自身的任务。处于这个思想,WinSock提供了一个新的模型——完成端口模型。
Masimaro
2018/08/31
9990
用WINSOCK发送Email,调用FTP
猫猫用WSOCK32.DLL实现了MQTT协议的发送,其实在TCP/IP上面的所有协议都有完整的文档,你都可以去实现了。到了无人区,很多地方都需要我们去探索,去沉淀。 加菲猫
加菲猫的VFP
2021/11/12
1K0
[C&C++]用WinSock封装自己的UDP类2
原文链接:http://blog.csdn.net/humanking7/article/details/50731385
祥知道
2020/03/10
6090
WSAAsyncSelect模型
WSAAsyncSelect模型允许程序以windows消息的形式接受网络事件通知 WSAAsyncSelect函数自动把套接字设为非阻塞模式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息 int WSAAsyncSelect( SOCKET s, //套接字句柄 HWND hWnd,//指定一个窗口句柄 u_int wMsg,//网络事件到来的消息ID long lEvent//指定那些需要发送 ); FD_READ:接收对方发送的数据包 FD_W
用户1154259
2018/01/17
7730
[C&C++]用WinSock封装自己的UDP类1
原文链接:http://blog.csdn.net/humanking7/article/details/50726625
祥知道
2020/03/10
1K0
Design issues - Sending small data segments over TCP with Winsock
When you need to send small data packets over TCP, the design of your Winsock application is especially critical. A design that does not take into account the interaction of delayed acknowledgment, the Nagle algorithm, and Winsock buffering can drastically effect performance. This article discusses these issues, using a couple of cases studies, and derives a series of recommendations for sending small data packets efficiently from a Winsock application.
用户4766018
2022/08/19
4540
c语言网络通信_c语言tcp网络编程
TCP/IP协议包含的范围非常的广,它是一种四层协议,包含了各种硬件、软件需求的定义。TCP/IP协议确切的说法应该是TCP/UDP/IP协议。UDP协议(User Datagram Protocol 用户数据报协议),是一种保护消息边界的,不保障可靠数据的传输。TCP协议(Transmission Control Protocol 传输控制协议),是一种流传输的协议。他提供可靠的、有序的、双向的、面向连接的传输。
全栈程序员站长
2022/11/01
8.4K0
Windows 网络通信套接字技术
TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输 层服务,而IP则是提供网络层服务。TCP/IP协议包括如下协议,其结构如图所示。
全栈程序员站长
2022/09/23
7930
Windows 网络通信套接字技术
windows下的C++ socket服务器(1)
windows下的一个C++ socket服务器,用到了C++11的相关内容,现在还不是很完善,以后会不断改进的! #include <winsock2.h>//1 以后会用这种方式对特定代码进行注释 #include <Windows.h> 1. #include <winsock2.h>     大家会发现windows下有winsock.h和winsock2.h,winsock2.h是winsock.h的升级版,它设计的目的是替代winsock.h,而不是扩展它。在winsock.h中定义的所有内容在
magicsoar
2018/02/06
2.3K0
system C Language
句柄:一个long型的数据,它是windows用来标识被应用程序所建立或使用的对象的唯一整数
黄啊码
2020/05/29
4340
点击加载更多

相似问题

每个设备许可的Nook

12

访问Nook上的存储

21

如何获取nook simple touch的设备id?

25

映射外部存储设备

113

谷歌在Kindle和Nook设备上的应用内计费

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文