![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Socket
文章平均质量分 82
daojin505
这个作者很懒,什么都没留下…
展开
-
IO完成端口
准备工作:1.创建Socket2.accept。3.accept之后,创建完成端口,并将此socket与此完成端口关联。4.启动线程,等待此完成端口。 如何运行:5.Send,Recv。异步调用,或者同步调用。OK! 如何结束:1. 关闭Socket。2. 线程受到异常通知。各自退出。3. 关闭完成端口。原创 2017-08-07 10:04:50 · 158 阅读 · 0 评论 -
c++socket模型之我见
能用UDP尽量用UDP,能不用TCP就不用。TCP要维护连接,错包重发,确认,错序调整等。消耗比较大。UDP只需要再一个端口上进行IO操作,而TCP则需要再不同的端口上进行IO操作。 假设说用TCP:案例1: 建立一个同时维持1000个链接的服务器。先说缺点1。阻塞模型: 1000个链接需要建立2000个线程去receive和send数据。开销相当大。原创 2017-08-07 10:12:39 · 248 阅读 · 0 评论 -
最简单的WSAEventSelect模型(注意注释的地方)
// 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")原创 2017-08-07 10:12:30 · 285 阅读 · 0 评论 -
MFC多线程编程
http://blog.csdn.net/yusheng9966/archive/2008/02/03/2079839.aspx具体来说是:在MFC中调用attach的时候有个宏叫ASSERT_VALID(),这个方法不允许访问非本线程创建的继承于。在CWnd函数里面有一个Valid()的静态方法,检测当前线程的MFC对象指针,是否在当前线程的Map中; 下面就是这个模块中原创 2017-08-07 10:11:34 · 214 阅读 · 0 评论 -
MFC运行时
1。MFC运行时GetRuntimeClass(); 虚函数GetBaseClass(); 成员函数GetThisClass(); 成员函数每一个类中,有一个CRuntimeClass的对象,然后把这个类的信息记录到CRuntimeClass类型的成员里面,同时可以找到父类中的此成员,例如,判断当前类是不是某个类型等。构造函数也记录在这个成员里面,这样就可以进行构造。 同时,也原创 2017-08-07 10:10:25 · 267 阅读 · 0 评论 -
C++编程模型
Winsock 的I/O操作:1、 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。为了解决这个问题,提原创 2017-08-07 10:10:14 · 1527 阅读 · 0 评论 -
windows的阻塞和非阻塞Socket编程
http://blog.csdn.net/mlite/archive/2006/04/30/699340.aspx Console.zip (1.3 KB) 下载次数: 5原创 2017-08-07 10:08:28 · 338 阅读 · 0 评论 -
非阻塞模式与阻塞模式
1.阻塞模式可以避免内存从Socket缓冲区copy至应用程序缓冲区,但是另一方面,因为在TCP层进行缓存,缓存大小最高可达17K的大小。因此,提高了(非页面内存)的使用。非页面内存十分昂贵。2.非阻塞模式,如果Receive或者Send不足够快,造成内存的Copy很多,从而降低效率。原创 2017-08-07 10:08:00 · 820 阅读 · 0 评论 -
WinSocket如何处理一个典型的数据请求
Let’s look at how the system handles a typical send call when the send buffer size is non-zero. When an application makes a send call, if there原创 2017-08-07 10:07:50 · 194 阅读 · 0 评论 -
两大问题
1。内存泄露的问题。刚开始是安装了一个内存泄露软件,去检查内存泄露,检查不出来,因为这个属于windows资源泄露。2。线程被锁住。原因是开了好几个下载线程,线程之间的同步没有做好。3。socket的半超时。没有设置好半超时放弃。原创 2017-08-07 10:13:07 · 153 阅读 · 0 评论