自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (6)
  • 问答 (2)
  • 收藏
  • 关注

转载 C语言中结构体对齐问题

关于C语言中的结构体对齐问题1,比如:struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof( A)=6, sizeof( B)=8,为什么?注:sizeof(short)=2,sizeof(long)=4因为:“成员对齐有一个重要的条件,即每个成员

2015-09-23 17:13:57 560

转载 STM32使用DMA加串口空闲中断接收数据

STM32中,需要用串口接收数据,是使用串口中断来接收数据。但是用这种方法的话,就要频繁进入串口中断,然后处理,效率就比较低。于是就想到用DMA来接收串口数据,这个STM32也是支持的。但是关键的一点,怎么知道数据接收完毕了呢?如果接收的数据长度固定,那就好办,直接设置DMA的接收数据个数就行了。但是如果长度不固定了,那应该怎么办了?         这个时候,就要用到STM32在串口中提供的

2015-09-23 16:24:28 2689 2

转载 TCP/IP数据包结构详解

[关键词] TCP IP 数据包 结构 详解 网络 协议一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析。如:网络监控,故障排查等…… IP包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用。由IP协议衍生的协议族有10数种(据我所知),以后还会出现更多

2015-09-22 14:53:03 6247 1

转载 TCP 、UDP、IP包的最大长度是多少?

传输层: 对于UDP协议来说,整个包的最大长度为65535,其中包头长度是65535-20=65515; 对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS,Maxitum Segment Size)决定,MSS就是TCP数据包每次能够传 输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替

2015-09-22 14:47:03 1924

转载 计算结构体的大小

结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。看下面这样的一个结构体:  struct stu1  {  int i;  char c;  int j;  };  先介绍一个相关的概念——偏移量。偏移量

2015-09-22 14:21:31 275

转载 string 与 CString 转化

都通过基本类型来转换即可:CString可以转换为基本类型LPCTSTR,LPCTSTR根据项目编码可以是const char*或者const wchar_t*;string可以用c_str()转换为const char*,stringw可以用c_str()转换为const w_char*。而CString和string/w都重载了=赋值操作符,可以把char*或者wchar_t*字符串赋值给

2015-09-22 13:31:00 414

转载 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

下文转自:http://www.cnblogs.com/cumtb3S/archive/2011/04/18/2020185.html      当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.

2015-09-22 10:53:43 1472

转载 从map对象中删除元素的操作

1 map.erase(k):删除map中键为k的元素。返回size_type类型的值,表示删除的元素个数;2 map.erase(p):从map中删除迭代器p所指向的元素。p必须指向map中确实存在的元素,而且不能等于map.end(),返回 void类型;3 map.erase(b,e):从map中删除一段范围内的元素,该范围由迭代器对b和e标记。b和e必须标记map中的一段有效范围:

2015-09-21 17:33:29 10439

转载 C和C++混合编程(error C2059: syntax error : 'string')

extern "C"表示编译生成的内部符号名使用C约定。C++支持函数重载,而C不支持,两者的编译规则也不一样。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字可能为_foo,而C++编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了

2015-09-21 11:32:33 1076

转载 C和C++混合编译

关于extern_C通常,在C语言的头文件中经常可以看到类似下面这种形式的代码: [plain] view plaincopyprint?#ifdef  __cplusplus  extern "C" {  #endif      /**** some declaration or so *****/    

2015-09-21 11:03:56 290

转载 Windows,Linux的select函数功能差异

转载http://www.cnblogs.com/fullsail/archive/2012/08/12/2634336.htmlWindows,Linux的select函数功能差异感谢主,Windows当年也实现了select函数,这让我们的跨平台大业至少顺畅了一节。但由于Windows渗入骨髓的叛逆心理,他总要和UNIX的实现保持一些差别,让你无可奈何。首先是Windows的s

2015-09-19 14:36:26 941

转载 WINDOWS SOCKET编程SELECT模型使用

int select(        int nfds,            //忽略        fd_ser* readfds,    //指向一个套接字集合,用来检测其可读性        fd_set* writefds,   // 指向一个套接字结合,用来检测其可写性        fd_ser* exceptfds, //指向一个套接字集合,用来检测

2015-09-19 14:34:11 538

转载 windows socket----select模型

一般我们的网络编程都是用bind ,listen,accept,send/sendto,recv/recvfrom。在创建套接字的时候,是默认使用阻塞模式的,每当我们调用send/sendto等方法时,套接字都会进入阻塞状态,等到条件满足后才返回。当然为每个连接创建线程是个解决这个问题的好办法。如:比较容易想到的一种服务器模型就是采用一个主线程,负责监听客户端的连接请求,当接收到某个客户端的连接请

2015-09-19 14:32:45 300

转载 Windows Socket 异步编程(非阻塞模式) -- Select回送示例

使用Select异步模式来实现返送示例。服务器启动并监听9999端口,并将收到的客户端信息打印并返送给客户端。重点理解的是:一个套接字是否是可读、可写状态。当服务器端socket在Accept成功之后,便是可读状态,接收客户端发送数据。当客户端发送recv函数时,这个socket便成为可写状态,服务器端便知道这个客户端可写,然后根据自己的定义发送给客户端内容。如果客户端不发送recv函数,

2015-09-19 14:31:08 801

转载 Windows I/O模型之一:Select模型

1.概念理解       在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用模式:同步:所谓同步,就是在发出一个功能调用时,在没有得到结果前,该调用就不返回。也就是必须一件一件做事,等前一件做完了才能做另一件。例如在C/S模式的某个流程中,你服务器提交了某个请求,在服务器处理完毕返回结果期

2015-09-19 14:28:08 346

转载 socket编程中select的使用

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来 说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式 block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用 Select就可以完成非阻塞(所谓非阻

2015-09-19 14:10:08 297

转载 产生一定范围的随机数

设取值范围是[a,b],a,b都是非夫整数。则使用如下公式可产生属于区间[a,b]的随机数:rand()%(b-a+1) + a ;套用这个公式,以楼主的例子而言,就是:rand()%(20-10+1) + 10;即rand()%11 + 10;其中rand()%11将产生0——10的随机数;再加上10就是10——20了。对于30

2015-09-19 14:02:06 481

转载 Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET

在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。宏FD_ZERO、FD_SET、FD_CLR、FD_ISSET中“FD”即为file descriptor的缩写,下面来一一进行介绍。       首先介绍一个重要的结构体:fd

2015-09-19 14:00:13 13209 4

转载 VC定时器的用法:SetTimer和Ontimer

Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 Settimer是设置,Ontimer是响应Settimer消息的。SetTimer函数的用法1 )用WM_TIMER来设置定时器先请看SetTimer这个API函数的原型UINT_PTR SetTimer(       

2015-09-18 17:39:29 344

转载 VC-Socket send函数和recv函数详解

1.send 函数int send( SOCKET s, const char FAR *buf, int len, int flags );      不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。    该函数的第一个参数指定发送端套接字描述符; 

2015-09-18 16:40:03 468

转载 socket select函数的详细讲解

原型int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);nfds:本参数忽略,仅起到兼容作用。   readfds:(可选)指针,指向一组等待可读性检查的套接口。   writefds:(可选)指针,

2015-09-18 16:21:25 960

转载 socket编程中select的使用

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来 说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式 block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用 Select就可以完成非阻塞(所谓非阻

2015-09-18 16:15:30 226

转载 setsockopt :SO_LINGER 选项设置

setsockopt 设置 SO_LINGER 选项    此选项指定函数close对面向连接的协议如何操作(如TCP)。内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。 SO_LINGER选项用来改变此缺省设置。使用如下结构:struct linger {     int l_onoff; /* 0

2015-09-18 15:56:24 366

转载 setsockopt :SO_LINGER 选项设置

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

2015-09-18 15:54:57 2306

转载 C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)

步骤:1。运行--〉cmd:打开cmd命令框2。在命令行里定位到InstallUtil.exe所在的位置InstallUtil.exe 默认的安装位置是在C:/Windows/Microsoft.NET/Framework/v2.0.50727里面,所以你要在cmd里通过cd定位到该位置(cd C:/Windows/Microsoft.NET/Framework/v2.0.

2015-09-17 16:09:18 2266

转载 C#中var关键字

var关键字是C# 3.0开始新增的特性,称为推断类型 .可以赋予局部变量推断“类型”var 而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型、.NET Framework 类库中定义的类型或任何表达式。上面的资料有点抽象不好理解.示例:原来我们定义变量,是要这样:数据类型 变量名 = 值;如:

2015-09-16 20:00:08 259

转载 用C#编写Windows服务

前言:编写一个Windows服务程序,定时从数据库中拿出记录发送邮件。测试环境:Visual Studio 2005 SP1、Windows Server 2003 SP2一、新建项目打开VS2005,新建一个“Windows 服务”项目。二、添加Timer展开“工具箱”,在“组件”标签下找到“Timer”双击,这时就添加了一个Timer组件,修改“Name

2015-09-15 20:01:59 396

转载 windows服务与自启动程序的区别

在客户端服务器项目实践中,作为服务端必须保持程序的24小时不间断运行,需要做一个监控,当监控到该程序已关闭时则重新启动下。     有两种方法可以实现这个功能:第一是做windows服务,作为后台的系统服务监控程序的运行状态。第二是编写另外一个程序作为监控程序,通过添加计划任务,将监控程序设置为开机启动。网上讨论两者的区别很少,大概都是集中在监控程序有界面而window

2015-09-15 18:22:43 2479

转载 C# 编写Windows Service(windows服务程序)

Windows Service简介:一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式。这些启动方式包括了自动启动和手动启动两种。对于自动启动的Windows服务程序,它们在Windows启动或是重启之后用户登录之前就开始执行了。只要你

2015-09-15 16:27:12 460

转载 C#创建windows服务搭配定时器Timer使用实例

功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间。      原理这些就不说了,三语两语说不清楚,直接贴一个实例。不能贴图片!!那个压缩文里面是word文档!!有图有真相 1.建立空白项目 2.添加创建windows服务需要的引用,选择System.ServiceProcess。

2015-09-15 16:22:43 5235 1

转载 C#操作注册表

下面我们就来用.NET下托管语言C#注册表操作,主要内容包括:注册表项的创建,打开与删除、键值的创建(设置值、修改),读取和删除、判断注册表项是否存在、判断键值是否存在。准备工作:1:要操作注册表,我们必须要引入必要的命名空间:using Microsoft.Win32;在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~2:命名空间里面提供了一个类:Re

2015-09-15 15:07:35 309

转载 vs2008 windows服务(C#) 开发与安装

写在前面,本文参考多处网上文章及自己的体会心得下面说一下步骤1. 新建一个项目2. 从一个可用的项目模板列表当中选择Windows服务3. 设计器会以设计模式打开4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上此处要注意的:服务一跑起来,唉,怎么回事,时间到了怎么没有执行事件呢???????后来,我找很多资料才知道,这个Timer控件是winFo

2015-09-15 13:20:40 845

转载 C#创建Windows服务程序

一.Windows服务介绍:  Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C++功底。然而现在在Visual Studio.Net下,你可以运用C++或Visual C#或Visual Basic.Net很轻松的创建一个Windo

2015-09-15 11:48:19 1210

转载 VS2008“无法找到“xxx.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”

现象:在vs2008中,建立一个空项目,添加一个c++文件main.cpp#includeusing namespace std;int main(){    cout     return 0;}该程序能够编译得过,但是执行,无论是debug还是release,都很出现“无法找到“xxx.exe”的调试信息,或者调试信息不匹配。未使

2015-09-14 18:43:24 1890

转载 vs2008和vs10以及Windows Phone自带的1000多个 Windows 系统使用的各种图标、光标和动画文件

D:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Icons\  :Windows Phone 自带图片在Visual Studio 2008的安装目录下,/Microsoft Visual Studio 9.0/Common7/VS2008ImageLibrary/2052文件夹下面,有一个VS2008ImageLibrar

2015-09-12 16:49:13 910

转载 TCP之RST发送场景

TCP之RST发送场景 1.connect一个不存在的端口; 2.向一个已经关掉的连接send数据; 3.向一个已经崩溃的对端发送数据(连接之前已经被建立); 4.close(sockfd)时,直接丢弃接收缓冲区未读取的数据,并给对方发一个RST。这个是由SO_LINGER选项来控制的; 5.a重启,收到b的保活探针,

2015-09-12 15:58:03 373

转载 C#中 string[]转为string及VS中如何带命令行调试、main函数获取命令行参数

数组:string[] s = { "a", "b", "c", "d", "e" };①Join转换字符串:string str1 = string.Join(",", s);②格式化字符串:string str2 = String.Format("{0},{1},{2},{3},{4}", s);

2015-09-11 17:28:33 1522

转载 几种TCP连接中出现RST的情况

应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的。在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到R

2015-09-10 18:11:23 488

转载 从TCP协议的原理来谈谈rst复位攻击

在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。 1、TCP是什么?TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的字节流传输。我来用土

2015-09-10 18:02:21 287

转载 wireshark分析包中关于三次握手和四次终止标识

三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1. (B) --> [SYN] --> (A) 假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接. 注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认

2015-09-10 16:34:44 295

UDS ISO 14229 最全协议-全部协议 国际标准2013版

良心贡献 良心贡献 质量保证 只需2个积分,希望好评! ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS ISO 14229 最全协议-全部协议 国际标准2013版UDS I

2022-07-23

XCP协议层标准ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-0

ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-0.pdf

2018-04-03

基于stm32的GPRS网络与CAN网络通信设计

硬件部分主要由两台PC机、stm32f103VET6微处理器及其外围器件、GPRS模块等组成,并且由网络调试助手、串口调试助手、新花生壳等软件工具协助。软件部分主要利用MDK4.72进行程序设计。主要实现CAN网络与GPRS网络信息数据的相互传输,并充分利用单片机的数据处理能力,实时监控两个网络的通信状态并在其驱动的彩色液晶屏上进行显示。考虑到数据传输的效率、可靠性、实时性以及微处理器的资源利用率,使用了stm32f103VET6微处理器的串口DMA接收和DMA发送功能,这对来自于GPRS网络和CAN网络的大数据大有裨益。另外,由于经济因素,本文设计使用了一台PC机和一个CAN转换器模拟CAN网络里的一台主机,使用另一台PC机模拟GPRS网络里的服务器。

2015-10-25

msp430、51单片机驱动24L01的C程序

msp430、51单片机驱动24L01的c程序

2014-12-25

信号与系统教学

该实验平台系长期从事一线教学老师及一批学习优良的学生合作开发,有助于学习信号与系统这么课程

2013-09-30

信号与系统虚拟实验平台

信号与系统虚拟实验平台,专注于在实验中学习信号与系统

2013-09-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除