UNIX/Linux网络编程
Linux/UNIX网络编程学习中的一些问题和想法还有代码
thinkerleo7798
这个作者很懒,什么都没留下…
展开
-
C++中的Unicode编码:wchar, UTF-8,UTF-16,UTF-32
C++在C11标准中加入了对Unicode编码的支持,新增了wchar_t、char16_t、char32_t内置数据类型。 cout << sizeof(char) << endl; cout << sizeof(wchar_t) << endl; cout << sizeof(char16_t) << endl; cout << sizeof(char32_t) <原创 2017-11-14 20:29:34 · 3089 阅读 · 0 评论 -
什么是POP3、SMTP和IMAP?
POP3POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。转载 2016-07-14 11:08:50 · 554 阅读 · 0 评论 -
《UNIX网络编程》中的unp.h文件和config.h文件
《UNIX网络编程》一书中大量使用了作者自己编写的包裹函数,这些函数的声明统统写在了 unp.h 头文件中,现在将这个头文件写在博文里,方便以后查看。注意:unp.h 和 config.h的生成, 可以上本书官网 http://www.unpbook.com/下载源代码,根据README中的使用方法生成 ,除了这两个头文件外还需要相关静库文件的支持。笔者系统环境为Ubuntu 17.04 amd64原创 2017-07-21 10:47:18 · 3783 阅读 · 0 评论 -
HTTP 错误代码总结
HTTP 错误代码总结HTTP 错误代码将从远程服务器返回以响应请求。我们最为熟悉的可能是 HTTP404,只要服务器在 URI 中找不到指定的页面/文档,便会返回该代码。代码消息描述HTTP400错误请求由于语法无效,服务器可能无法处理该请求。HTTP401转载 2017-07-22 14:30:49 · 2860 阅读 · 0 评论 -
Libpcap库编程指南--数据包捕获
简介Libpcap是一个运行在类UNIX系统下的网络数据包捕获函数库,可以捕获网卡上的数据,也可以发送数据包,相应的Windows版本为WinPcap。翻译 2017-09-11 12:18:38 · 3966 阅读 · 0 评论 -
Libpcap库编程指南--网卡信息获取
用Libpcap 进行编程的第一步往往是获取网卡设备列表,以下是官方示例代码。 代码示例:#include <cstdio>#include "pcap.h"int main(){ pcap_if_t *alldevs; pcap_if_t *d; int i=0; char errbuf[PCAP_ERRBUF_SIZE]; /* 获取本地机器设备列表原创 2017-09-13 14:18:39 · 569 阅读 · 0 评论 -
Libpcap库编程指南--网卡高级信息获取
事实上,Libpcap提供了其他更高级的信息。 特别需要指出的是, 由 pcap_findalldevs() 返回的每一个 pcap_if 结构体,都包含一个 pcap_addr 结构体,这个结构体由如下元素组成: 一个地址列表 一个掩码列表 (each of which corresponds to an entry in the addresses list). 一个广播地址列表 (eac原创 2017-09-13 14:31:27 · 904 阅读 · 0 评论 -
Libpcap库编程指南--网卡数据包捕获
本讲的范例程序所实现的功能和效果和上一讲的非常相似 (打开适配器并捕获数据包), 但本讲将用 pcap_next() 函数代替上一讲的 pcap_loop()函数。 pcap_loop()函数是基于回调的原理来进行数据捕获,这是一种精妙的方法,并且在某些场合中,它是一种很好的选择。 然而,处理回调有时候并不实用 – 它会增加程序的复杂度,特别是在拥有多线程的C++程序中。可以通过直接调用pcap_原创 2017-09-13 14:48:43 · 1572 阅读 · 0 评论 -
Libpcap库编程指南--过滤数据包
WinPcap和Libpcap的最强大的特性之一,是拥有过滤数据包的引擎。 它提供了有效的方法去获取网络中的某些数据包,这也是WinPcap捕获机制中的一个组成部分。 用来过滤数据包的函数是 pcap_compile() 和 pcap_setfilter() 。 pcap_compile() 它将一个高层的布尔过滤表达式编译成一个能够被过滤引擎所解释的低层的字节码。有关布尔过滤表达式的语法可以参见原创 2017-09-13 14:58:03 · 6252 阅读 · 0 评论 -
Libpcap库编程指南--分析数据包
现在,我们可以捕捉并过滤网络流量了,那就让我们学以致用,来做一个简单使用的程序吧。 在本讲中,我们将会利用上一讲的一些代码,来建立一个更实用的程序。 本程序的主要目标是展示如何解析所捕获的数据包的协议首部。这个程序可以称为UDPdump,打印一些网络上传输的UDP数据的信息。我们选择分析和现实UDP协议而不是TCP等其它协议,是因为它比其它的协议更简单,作为一个入门程序范例,是很不错的选择。让我们原创 2017-09-13 15:21:05 · 883 阅读 · 0 评论 -
Libpcap库编程指南--保存数据包
#include "pcap.h"#include <cstdlib>/* 回调函数原型 */void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);int main(int argc, char **argv){ pcap_if_t *alldevs;原创 2017-09-13 15:30:36 · 968 阅读 · 0 评论 -
字符编码笔记:ASCII,Unicode 和 UTF-8
字符编码笔记:ASCII,Unicode 和 UTF-8作者: 阮一峰日期: 2007年10月28日一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应转载 2017-11-14 08:42:59 · 257 阅读 · 0 评论 -
《Unix网络编程》Unix/Linux中exec系函数辨析
Unix/Linux中exec系函数辨析原创 2017-07-18 12:35:43 · 261 阅读 · 0 评论 -
《Unix网络编程》 多进程并发服务器基本模型
多进程并发服务器的基本原理是:对于每一个客户的访问请求,都fork一个子进程来处理这个请求。程序轮廓:pid_t pid;int listenfd, connfd;listenfd = Socket(...);Bind(listenfd, LISTENQ);while(1){ connfd = Accept(listenfd, ...); if( (pid = fork原创 2017-07-18 13:52:30 · 422 阅读 · 0 评论 -
《UNIX网络编程》多线程TCP C/S服务器正常启动和正常结束过程剖析
一、启动过程1、服务器启动后,它调用socket、bind、listen、accept, 并阻塞accept调用(我们还没有启动客户) 2、客户启动并调用socket和connect,后者引起TCP三路握手过程。当三路握手完成后,客户中的connect和服务器中的的accept均返回,连接建立。二、结束过程1、服务器子进程终止,关闭所有打开的描述符,客户打开的套接字由内核关闭。这导致客户TCP发送原创 2017-07-24 19:50:49 · 491 阅读 · 0 评论 -
《UNIX网络编程》wait和waitpid函数
之前的内容里我们用wait来处理已经终止的子进程,waitpid的功能和wait类似,但也有区别。 wait和waitpid的函数模型:pid_t wait(int *statloc);pid_t waitpid(pid_t pid, int *statloc, int options);返回值:若成功则返回进程的ID, 出错则返回0或者-1相同点函数wait和waitpid均返回两个值,已经终原创 2017-07-26 22:24:41 · 487 阅读 · 0 评论 -
在Ubuntu 64位环境下编译Liunx内核出现 Can't use 'defined(@array)' 错误的解决办法
在编译嵌入式Linux内核时出现了以下错误提示:Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.起初一头雾水,仔细看了错误提示后删掉了kernel/timeconst.pl 文件中 373行的@val = @{$canned_v原创 2016-09-02 11:00:12 · 24831 阅读 · 3 评论 -
Linux下搭建ARM交叉编译环境的步骤
1.将交叉编译工具链 arm-2009q1.tar.gz 复制到某目录下(这里为/opt/Tools),输入 sudo tar zxvf arm-2009q1.tar.gz 解压到当前文件夹2.设置环境变量,切换到root用户,修改 /root/.bashrc,在文件最后添加如下内容CROSS_COMPILE=arm-none-linux-gnueabi-PATH="/opt/To原创 2016-09-01 00:04:52 · 957 阅读 · 0 评论 -
Linux C: 基于C/S的多线程网络编程 (服务器充当一个客户端的两点传输)
基于C/S的多线程网络编程原创 2016-07-07 00:29:59 · 1264 阅读 · 0 评论 -
Linux C: 基于C/S的多线程网络编程 2 (多客户端)
客户端:#include#include#include#include#include#include#include#include#include#includechar name[64];int tcp_connect(const char* ip, int port) //用于客户端的连接{ int sfd = socket(AF_INET, SO原创 2016-07-07 00:36:54 · 943 阅读 · 0 评论 -
文件/etc/fstab
文件/etc/fstab包含了静态文件系统信息,定义了存储设备和分区整合到整个系统的方式。mount 命令会读取这个文件,确定设备和分区的挂载选项。字段定义/etc/fstab 文件包含了如下字段,通过空格或 Tab 分隔: - 要挂载的分区或存储设备. - 的挂载位置。 - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2, e原创 2016-09-28 09:36:40 · 332 阅读 · 0 评论 -
解决makefile不兼容的问题:make降级
make自被大神RSM发布以来已经经历了许多次语法更新,所以时常有 makefile语法不兼容的问题,最好的方法便是回滚到旧版本。 1.下载目标make源码,地址 ftp.gnu.org/gnu/make 2.用tar解压 3.执行./configuration 4.执行 build.sh 5.删除旧版make : sudo apt-get remove make 6.执行 make i原创 2016-10-13 23:59:18 · 1821 阅读 · 2 评论 -
linux中几种查找文件方式的比较
方法一: whereis 命令whereis命令快捷方便,但是仅仅限于二进制文件。方法二: locate命令locate命令查找快而全面,它通过通过"/var/lib/mlocate/mlocate.db"数据库查找,但是此数据库每天更新一次,可能有些当时的文件查不到。需要更新数据库,命令:updatedb,如果想只统计数目可以加上-c参数,-i参数可以忽略大小写进行查找,wherei原创 2016-10-20 23:24:45 · 465 阅读 · 0 评论 -
Linux之日志系统
Linux之日志系统实验介绍日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。它可以记录下系统所产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。收集你想要的数据,分析出有价值的信息,可以提高系统、产品的安全性,可以帮助开发完善代码,优化产品。日志会成为在事故发生后查明“发生了什么”的一转载 2016-10-21 00:17:05 · 1415 阅读 · 0 评论 -
linux驱动程序makefile文件的解释
linux驱动程序makefile文件的解释原创 2016-10-25 17:07:27 · 479 阅读 · 0 评论 -
网络文件系统nfs文件系统使用
转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/06/30/1768474.html一、NFS简介1、NFS就是Network FileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目录,访问该目录就像访问本地目录一样,所以也可以简单的将转载 2016-10-27 14:23:03 · 541 阅读 · 0 评论 -
Linux启动过程步骤详解
转载自:http://blog.chinaunix.net/uid-26495963-id-3066282.html启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱转载 2016-10-27 15:07:21 · 283 阅读 · 1 评论