Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux网络编程——原始套接字能干什么?

Linux网络编程——原始套接字能干什么?

通常情况下程序员接所接触到的套接字(Socket)为两类: (1)流式套接字(SOCK_STREAM):一种面向连接的 Socket,针对于面向连接的TCP 服务应用; (2)数据报式套接字(SOCK_DGRAM):一种无连接的 Socket,对应于无连接的 UDP 服务应用。 从用户的角度来看,SOCK_STREAM、SOCK_DGRAM 这两类套接字似乎的确涵盖了 TCP/IP 应用的全部,因为基于 TCP/IP 的应用,从协议栈的层次上讲,在传...
Linux网络编程——原始套接字编程

Linux网络编程——原始套接字编程

原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据。区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用原始套接字。原始套接字的创建:int socket ( int family, int type, int protocol );参数: family:协议族 这里写PF_PACKET type: 套接字...
Linux网络编程——原始套接字实例:MAC 头部报文分析

Linux网络编程——原始套接字实例:MAC 头部报文分析

通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢?链路层封包格式MAC 头部(有线局域网)注意:CRC、PAD 在组包时可以忽略链路层数据包的其中一种情况:unsigned char msg[1024] = { //--------------组MAC--------14------ 0xb8, 0x88, 0x...
C语言数据类型是如何被大多数计算机系统所支持?

C语言数据类型是如何被大多数计算机系统所支持?

问题:在读K&R版的The C Programming Language一书时,我在[介绍,第3页]看到这样一条说明:因为C语言提供的数据类型和控制结构可以直接被大部分计算机系统所支持,所以在实现自包含程序时所需要的运行库文件一般很小。这段黑体说明了什么?能否找到一个例子来说明C语言中的某种数据类型或控制结构不被某种计算机系统直接支持呢?回答:事实上,C语言中确实有不被直接支持的数据类型。在许多嵌入式系统中,硬件上并没有浮点运算单元。因此,如果你写...
程序是怎么执行的

程序是怎么执行的

Docker 是一个建立在操作系统+编译器基础之上的系统,所以了解操作系统,编译器以及程序运行机制对我们理解 Docker 来说非常重要。本文是一个自己的体会,有很多不精确的地方,目的是希望大家多关注低层,多修炼内功,多读好书。 一直想写篇文章来说明在程序运行过程中操作系统都干了些什么事。下面我试着说明: 首先,任何程序都是有格式的,所谓无规矩不成方圆,任何美的,精巧的事物都是精密组织的,程序也一样。我之前用的最多的是c#与 java,有趣的是,当时很...
C++学习笔记:引用

C++学习笔记:引用

1. 引用的定义及意义a. 引用的定义引用必须初始化。因为引用一经定义,它就不能再指向其他对象了,所以需要进行初始化。type & quote_name=var_name;但引用不能用引用对象的地址进行初始化。如果想对对象的地址进行引用,可以定义一个指针引用。b. 引用的意义int a=10;int &b=a;这里,b就是一个引用,b实际上指向的是a的地址,但它不是指针,是引用,是a的别名,a能做的b都能做。2. 引用的应用实际应用中,引用...
C++中的重载、覆盖、隐藏

C++中的重载、覆盖、隐藏

前几天面试时被问及C++中的覆盖、隐藏,概念基本答不上来,只答了怎么用指针实现多态,也还有遗漏。最终不欢而散。回来后在网上查找学习了一番,做了这个总结。概念一、重载(overload)指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。(1)相同的范围(在同一个作用域中) ;(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。(5)返回值可以不同;二、重写(也称为覆盖 override)是指派生类重新定义基类...
fcntl函数加文件锁

fcntl函数加文件锁

对文件加锁是原子性的,可以用于进程间文件操作的同步。在Linux下,有三个函数可以对文件进程加锁,分别是fcntl、flock、lockf。这里只说fcntl,它的用法也是最复杂的。 fcntl是file control的缩写。在linux下大部分设备都是文件,所以fcntl的功能也比较多,包括:Duplicating a file descriptor(复制文件描述符)File descriptor flags(操作close-on-exec标志)Fi...
Linux使用共享内存通信的进程同步退出问题

Linux使用共享内存通信的进程同步退出问题

两个甚至多个进程使用共享内存(shm)通信,总遇到同步问题。这里的“同步问题”不是说进程读写同步问题,这个用信号量就好了。这里的同步问题说的是同步退出问题,到底谁先退出,怎么知道对方退出了。举个例子:进程负责读写数据库A,进程B负责处理数据。那么进程A得比进程B晚退出才行,因为要保存进程B处理完的数据。可是A不知道B什么时候退出啊。A、B是无关联的进程,也不知道对方的pid。它们唯一的关联就是读写同一块共享内存。正常情况下,进程B在...
Qt Creator自定义编译运行步骤

Qt Creator自定义编译运行步骤

一直用Qt Creator开发。无它,只是因为linux下C++ IDE选择不多。同时因为我抛弃了MFC,平时写个小工具还得靠Qt,正好一举两用。用Qt Creator开发一般的工程,是不用修改编译、运行步骤的。编译、运行都是一键完成。不过,像我这个多进程的工程,由一个总工程管理,下面分为多个子工程。运行时需要由一个进程启动其他进程,但是Qt编译的文件却是分开的这么多的文件夹管理很不方便,而且不同进程需要读相同的配置文件,路径也不好配。于是我只好在编译时都...
用HTML5 Canvas 做擦除及扩散效果

用HTML5 Canvas 做擦除及扩散效果

2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果。好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内实现了一个方案【下文方案一】,后来继续探索之后进一步更新了这个方案【下文方案二】,提高了交互的性能,也提升了用户体验。今年初的另一个项目,提出了一个比较类似的需求,不过不是擦除效果,需要在一张地图上动态显示雾霾驱散的效果,这个交互需求有个小难点,雾霾的边缘是模...
Linux下获得线程ID syscall(224)

Linux下获得线程ID syscall(224)

对于Linux线程,也许大家并不陌生,而我们通常所说的线程是指基于POSIX标准的线程,而Linux下除了兼容POSIX标准,而且提供线程在内核级的支持。早在Linux kernel2.4之前,Linux的线程(LinuxThread)属于用户级,内核根本不知道线程的存在,为了得到内核的支持,2003 年,RedHat公司(很了不起的一个公司)发布了NPTL(Native POSIX Thread Library),至今广泛使用。NPTL很优秀,对信号的处...
Android平台之不预览获取照相机预览数据帧及精确时间截

Android平台之不预览获取照相机预览数据帧及精确时间截

在Android平台上要获取预览数据帧是一件极其容易的事儿,但要获取每帧数据对应的时间截并不那么容易,网络上关于这方面的资料也比较少。之所以要获取时间截,是因为某些情况下需要加入精确时间轴才能解决问题,如果自己给获取到的时间截打上时间截,则必定引入很多误差,文档主要以理论为主,我想作为一名合格的程序员,有了一个想法,则一定会有办法去编码实现的。 因为项目需要,查找了大量的资料,发现网络上关于获取预览数据的资料都是通过实现PreviewCallback接口...
Android开发之打开闪光灯录制视频

Android开发之打开闪光灯录制视频

Android的SDK在线API上对录制视频的方法、步骤都写得非常清楚,但是如果没有一点思路,写起来也比较式费事。录制视频的全过程要打开闪光灯(可能是因为项目需要,或者特殊原因),则必须按照一定的顺序进行开关,毕竟容易出错。要实现录制的同时开启闪光灯也不难,官方API给出了一个大体的步骤.因为要采集点视频数据,临时写了个简单的Demo学习下,必要时再深度开发。 首先在工程中的AndroidManifest.xml中添加权限声明,因为要使用到摄像头,故需要...
<< 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 >>