点点滴滴

不积跬步,无以至千里;不积小流,无以成江海。

储备列表

  • [转载]7种网络编程I/O模型代码实现实例之二

    1

    六,重叠I/O模型若需要建线程池,可参考事件选择模型。若纠结于send,可参考下面的IOCP。#include <WinSock2.h>#include <Windows.h>#include <MSWSock.h>#include <stdio.h>#pragma comment(lib,"Ws2_32.lib")#define BUFFER_SIZE 4096typedef struc

    soskp-yoours2015-05-10 18:43:16

    阅读更多
  • [转载]7种网络编程I/O模型代码实现实例之一

    2

    阻塞模式下,send会发生阻塞(非阻塞模式下send返回WSAEWOULDBLOCK错误,重叠I/O下表现为投递的发送请求一直无法完成)的情况一般可以分为3种 :1,  服务器虽然发送了大量数据,但客户端并未调用recv函数去接。2,网络状况不佳,发送缓冲区中的数据一直发不出去。3,发送数据量很大,如下载功能,协议发送数据的速度比不上send函数将数据拷贝到发送缓冲区的速度。对于1,2情况,我们似乎可以直接关闭套接字,让客户端

    soskp-yoours2015-05-10 18:40:18

    阅读更多
  • [转载]使用UDP进行跨网段广播

    3

    广播域首先我们来了解一下广播域的概念。广播域是网络中能接收任一台主机发出的广播帧的所有主机集合。也就是说,如果广播域内的其中一台主机发出一个广播帧,同一广播域内所有的其它主机都可以收到该广播帧。广播域的计算如何知道一台主机是属于哪一个广播域呢?其实计算很简单,只要用主机的IP地址与子网掩码进行与运算即可知道该主机属于哪一个广播域。例如:一台主机的IP地址为192.168.23.150,子网掩码为255.255.255.0,那么它所属的广

    soskp-yoours2015-05-10 17:15:19

    阅读更多
  • [转载]setsockopt设置socket状态

    4

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDont

    soskp-yoours2015-05-09 22:35:39

    阅读更多
  • [转载]Linux动态库静态库说明

    5

    一、nm命令nm命令可以列出一个函数库文件中的符号表。它对于静态的函数库和共享的函数库都起作用。对于一个给定的函数库,nm命令可以列出函数库中定义 的所有符号,包括每个符号的值和类型。还可以给出在原程序中这个函数(符号)是在多少行定义的,不过这必须要求编译该函数库的时候加“-l”选项。关于符号的类型,这里我们再多讨论一下。符号的类型是以一个字母的形式显示的,小写字母表示这个符号是本地(local)的,而大写字母则表示 这个符号是全局的(

    soskp-yoours2015-05-09 21:57:16

    阅读更多
  • [转载]Linux动态加载库-dlopen,dlclose,dlsym

    6

    一、dlopen()dlopen函数打开一个函数库然后为后面的使用做准备。C语言原形是: void * dlopen(const char *filename, int flag);如果文件名filename是以“/”开头,也就是使用绝对路径,那么dlopne就直接使用它,而不去查找某些环境变量或者系统设置的函数库所在的目录了。否则dlopen()就会按照下面的次序查找函数库文件:1. 环境变量LD_LIBRARY指明的路径。

    soskp-yoours2015-05-09 21:26:19

    阅读更多
  • [转载]linux下动态库静态库编译和使用

    7

    linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为静态库,是好多个.o合在一起,用于静态连接 .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la *.

    soskp-yoours2015-05-09 21:14:05

    阅读更多
  • [转载]使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序

    8

    写这篇文章的目的在于帮助那些既要使用Visual Studio编写程序又要开发和调试嵌入式Linux 程序的苦命程序员们!第一步, 安装 WinGDB ,下载位置  http://www.wingdb.com/,连接是http://www.wingdb.com/WinGDB-latest_trial.msi 30天试用版在30天后 卸载掉, 删除所有gdb相关的注册表, 然后重新安装, 就又可以使用30天, 安装过程如下图示:

    soskp-yoours2015-05-04 18:44:16

    阅读更多
  • [转载]N种方法使用C++调用C#.NET库

    9

    常规方法1:COM使用C#把托管类注册成COM,用regasm.exe注册output assembly,然后用C++像调用COM一样调用assembly里面的type。优点:编写代码简单,调用方便缺点:需要注册output,发布不够简单参考:http://www.codeproject.com/KB/cs/ManagedCOM.aspx常规方法2:CLRC#常规编写类,生产assembly,C++使用CLR编译既可直接引用托管类。优点

    soskp-yoours2015-04-20 13:36:37

    阅读更多
  • eVC程序移植到VS2008

    10

    一、错误 1>C:\Program Files\Microsoft Visual Studio 8\VC\ce\atlmfc\include\afxver_.h(77) : fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds 这里我们通过打开Project properties对话框里,切换到C/C++->Cod

    soskp-yoours2015-04-15 18:38:24

    阅读更多