- 浏览: 694856 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (440)
- c++学习笔记 (89)
- 如何适应变化 (1)
- VC常见问题 (7)
- Brew开发12月9日至12月26日 (1)
- 软件架构 (3)
- 自己动手写C语言编译器之文档翻译工作 (1)
- 自己动手写C语言编译器 (6)
- 网站资源 (1)
- 郝彬英文教程 (1)
- 45度斜角地图 (0)
- 35.264等角视图 (0)
- 30等角视图 (1)
- 如何搞opengl (1)
- 卷积。 (1)
- Android解析日记 (5)
- Linux基础教学 (9)
- Android游戏框架 (9)
- Android游戏开发之OpenGL之坐标矩阵 (2)
- Android异常处理 (1)
- 资源网站 (1)
- ARM汇编学习 (1)
- game (0)
- 自己动手实现OpenGL(准备开始!后面有空补充) (3)
- 云计算 (1)
- Android面试题目 (17)
- 深度学习 (1)
- OpenGL实践 (1)
- 神经网络学习-翻译 (4)
最新评论
-
3482561:
Android 面试题目之 线程池 -
daojin:
直接布局。
安卓高手之路之图形系统(6)requestLayout的流程 -
hety163:
没明白楼主所说的最后两段。如果一个相对布局中有多个子view, ...
安卓高手之路之图形系统(6)requestLayout的流程 -
jackuhan:
100篇!!!膜拜
安卓高手之路之 图形系统之 图形框架(1) -
ritterliu:
不错,按照流程把关键代码都贴出来了。谢谢分享
Android输入输出系统之TouchEvent流程
// Win32SocketTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "winsock2.h" //#pragma comment(lib,"wsock32.lib") #pragma comment(lib,"Ws2_32.lib") #include <iostream> int _tmain(int argc, _TCHAR* argv[]) { int arg = 1000; int theOp = ~arg + 1; int theOp2 = ~theOp + 1; //启动socket WSADATA data; WSAStartup(MAKEWORD(2,2),&data); //设置服务器地址 SOCKADDR_IN addr; addr.sin_family = AF_INET; addr.sin_port = htons(5000); addr.sin_addr.S_un.S_un_b.s_b1 = 113; addr.sin_addr.S_un.S_un_b.s_b2 = 90; addr.sin_addr.S_un.S_un_b.s_b3 = 50; addr.sin_addr.S_un.S_un_b.s_b4 = 170; int len = sizeof(addr); //创建socket SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //绑定socket bind(s,(sockaddr*)&addr,sizeof(addr)); while(true) { //监听socket listen(s,SOMAXCONN); //创建与socket关联的事件 WSAEVENT event = WSACreateEvent(); WSAEventSelect(s,event,FD_ACCEPT | FD_CLOSE); //等待事件发生 ////////////////////////////////////////////////////////////////////////// //阻塞!必须建立线程去处理。。以后改进。 DWORD nResult = WaitForSingleObject(event, INFINITE); if (nResult == WAIT_OBJECT_0) { //查询是什么事件发生了。 WSANETWORKEVENTS ne; WSAEnumNetworkEvents(s,event,&ne); if (ne.lNetworkEvents&FD_ACCEPT) { //为这个客户端建立一个套接字用来收发数据。 SOCKADDR_IN clientAddr; int addrlen = sizeof(clientAddr); SOCKET sClient = accept(s, (sockaddr*)&clientAddr, &addrlen); ////////////////////////////////////////////////////////////////////////// /////阻塞!必须建立线程去处理。。以后改进。 WSAEVENT eventWriteRead = WSACreateEvent(); WSAEventSelect(sClient,eventWriteRead,FD_WRITE|FD_READ|FD_CLOSE); while (true) { WaitForSingleObject(eventWriteRead,INFINITE); { //查询是什么事件发生了。 WSANETWORKEVENTS ne; WSAEnumNetworkEvents(sClient,eventWriteRead,&ne); if (ne.lNetworkEvents&FD_WRITE) { char a[1000]; memset(a,0,sizeof(a)); std::cin>>a; send(sClient, a, sizeof(a),0); } else if (ne.lNetworkEvents&FD_READ) { char buf[1000]; buf[999] = 0; recv( sClient,buf,len,0); std::cout<<buf; } else if (ne.lNetworkEvents&FD_CLOSE) { closesocket(s); } } WSAResetEvent(eventWriteRead); } ////////////////////////////////////////////////////////////////////////// } else { closesocket(s); } } ////////////////////////////////////////////////////////////////////////// WSAResetEvent(event); } return 0; }
要改进的地方
1。阻塞的地方waiforsingle改为waitformultiple,并且用线程去处理。
2。用短连接代替长连接来处理。收到一个完整的业务包之后,进行关闭。
发表评论
-
Camera框架初探
2012-12-28 00:26 2674先解释一些概念,然后带着思考去解读 1.CameraServ ... -
打印一个字符串的所有排列。
2011-07-24 18:04 1184//打印一个字符串的所有排列。void printSequen ... -
快速排序
2011-04-16 21:26 961#include <stdio.h> #inclu ... -
ubuntu配置Android指南
2011-04-09 04:46 1467您还未登录!|登录|注册|帮助 CSDN首页资讯论坛博客下载搜 ... -
linux ubuntu mount success
2011-04-05 22:13 4031wangshuai@wangshuai-virtual-ma ... -
ubuntu VMware
2011-04-05 15:00 812http://www.linuxidc.com/Linux/2 ... -
Android源代码获得方法
2011-04-03 19:58 1004http://www.williamhua.com/2009/ ... -
什么是页表和页目录
2011-03-27 21:49 13854G内存分解为1M个内存页。 1K个页组成一个页表。 1K个页 ... -
pure abstract class(什么是纯抽象类?)
2011-03-18 22:55 1220下面是C++的创造者的回答,供你参考 Bjarne Stro ... -
自动化Build的方法如下所示
2011-02-05 23:43 1304#本文件自动进行build ... -
批处理
2011-02-04 17:19 1240批处理之家: http://www.bathome.n ... -
CString的高效版本
2011-02-03 17:55 1031#pragma once #include <stri ... -
自己写的share_ptr + Arry 来制作CString共享版本
2011-02-03 01:54 1632#include "MyStudyFile.h&qu ... -
自己写的share_ptr
2011-02-01 23:43 3099#pragma once namespace WSBoo ... -
什么叫做坐标系的平移和旋转.
2011-01-16 10:35 3209坐标系是个什么概念呢: X,Y,Z的轴坐标, ... -
总结一下这几天操作符的学习心得
2010-12-11 20:43 9481.关于map的operator[]:原形为 val_type ... -
函数返回应该是个右值吧,为啥能放在左边(红色标示的部分)?
2010-11-17 16:18 12441楼 class A1 { public: A ... -
优点和缺点
2010-11-13 19:52 730优点:非常爱学习,为人很大方。做事很投入,很刻苦。 缺点是: ... -
游戏开发框架
2010-11-09 21:57 1117class m_eventManger { }; c ... -
键盘消息
2010-11-08 20:50 994void CqjgzDlg::OnBnClickedWin ...
相关推荐
WSAEventSelect模型
**WSAEventSelect模型基础** 在Windows Socket编程中,`WSAEventSelect`是一个关键的API函数,它允许程序员将套接字与Windows事件对象关联起来。这种模型为多路复用I/O提供了基础,使得应用程序可以等待多个网络...
《WSAEventSelect模型在服务端与测试程序中的应用详解》 在计算机网络编程领域,WSAEventSelect是一个至关重要的接口,它允许开发者将套接字事件与Windows事件对象关联起来,实现异步I/O操作。这个模型对于构建高效...
编写Win32程序模拟实现基于WSAEventSelect模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递。客户端向服务器端发送“请输出从1到1000内所有的水仙花数”,服务器回应客户端给出结果。...
**wsaEventSelect事件选择模型详解** 在计算机网络编程中,特别是在Windows系统下进行低级套接字编程时,`wsaEventSelect`是一个至关重要的API函数。它提供了基于事件的I/O模型,使得开发者可以处理多个套接字的...
Winsock 模型之 WSAEventSelect(事件通知) Winsock 模型之 WSAEventSelect(事件通知) 是一种异步 I/O 模型,它允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。该模型的主要特点是网络事件会...
http://blog.csdn.net/wangjieest/article/details/7042108 http://blog.csdn.net/ithzhang/article/details/8476556
`WSAEventSelect`是Windows Socket API提供的一种I/O模型,它允许应用程序通过事件对象来监控网络活动,从而提高效率并简化异步编程。在`VC++ 6.0`中,这个功能特别有用,因为它是那个时代广泛使用的开发工具。 ...
在本文中,我们将深入探讨如何使用C++编程语言来实现基于WSAEventSelect的I/O模型。WSAEventSelect是Windows Socket API(Winsock)提供的一种异步I/O机制,它允许应用程序通过等待网络事件来处理多个套接字。这个...
本篇内容将详细解释WSAEventSelect在单线程服务端模型中的应用,并通过源码解析其工作原理和实现方式。 1. **WSAEventSelect的基本概念** WSAEventSelect函数允许开发者指定一个或多个套接字事件,当这些事件发生...
**VC网络编程模型示例 - WSAEventSelect** 在Windows Socket API (Winsock)中,`WSAEventSelect`是一个重要的函数,它允许程序通过事件对象(如Windows事件或I/O完成端口)来处理网络事件。这个模型在Visual C++...
**WSAEventSelect事件选择网络模型** 在Windows Socket API(Winsock)中,WSAEventSelect是用于将网络事件与Windows事件对象关联的关键函数。它允许程序员使用Windows事件处理机制来管理套接字的异步操作,从而...
`WSAEventSelect`是Windows Socket API中一个核心的函数,它主要用于在多路复用I/O模型中注册网络事件,允许开发者以异步的方式处理套接字操作。在Windows平台上进行网络编程时,`WSAEventSelect`是实现非阻塞I/O和...
本教程将深入探讨如何利用Windows Socket API(WSA)中的`WSAEventSelect`函数,结合多线程技术来构建一个高效的C++服务器程序。`WSAEventSelect`是Windows平台下异步I/O操作的核心机制,它允许程序注册对特定套接字...
在Windows Socket编程中,有多种I/O模型可供选择,其中包括WSAAsyncSelect和WSAEventSelect,以及IOCP(I/O完成端口)模型。这些模型主要用来处理网络通信中的异步I/O操作,提高系统的并发性能。 首先,让我们详细...
2 界面基于对话框 使用WSAAsyncSelect和WSAEventSelect两个模型 这是因为使用了界面 前者对消息开放 后者完成网络服务 3 有文档 有测试程序 4 代码只有200多行 比书上少了100行 容易阅读多了 三个类SockectOjb ...
详解WSAEventSelect网络模型-附件资源
在"Winsock WSAEventSelect 服务端模型源码"中,我们可以预见到以下关键知识点: 1. **套接字(Socket)**:套接字是网络通信中的基本概念,它是进程间通信的一种方式,特别是在Internet上的进程间通信。创建套接字...