随笔分类 -  linux网络通信

linux内核数据库sqlite3的移植和简单操作
摘要:基于嵌入式linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDB这几种数据库的特点:•Firebird是关系型数据库,功能强大,支持存储过程、SQL兼容等•SQLite关系型数据库,体积小,支持ACID事务•Berkeley DB中并没有数据库服务器的概念,它的程序库直接链接到应用程序中•eXtremeDB是内存数据库,运行效率高SQLite的源代码是C,其源代码完全开放,是一个轻量级的嵌入式数据库。SQLite有以下特性: 零配置一无需安装和管理配置; 储存在单一磁盘文件中的一个完整的数据库; 数据库文件可以在不同字节顺序的机器间自由共享;. 阅读全文
posted @ 2012-07-07 13:21 孟浩依然 阅读(4228) 评论(1) 推荐(1)
网络超时检测
摘要:getsockoptsetsockopt网络超时检测:必要性:避免进程在没有数据时无限制的阻塞 当设置的时间到,进程从原操作返回继续运行3种方式可以:1.设置socket的属性SO_RCVTIMEO 接收超时SO_SNDTIMEO 发送超时struct timeval tv;tv.tv_sec = 5;tv.tv_usec = 0;setsockopt(sockfd, SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv));5秒接收超时检测。2.select也可以超时检测3.设置定时器(timer),捕捉SIGALRM信号#include <stdio.h& 阅读全文
posted @ 2012-07-06 20:32 孟浩依然 阅读(589) 评论(0) 推荐(0)
广播
摘要:前面介绍的数据包发送方式只有一个接收方,称为单播如果同时发给局域网中的所有主机,称为广播只有用户数据报(使用UDP)套接字才能广播广播地址:以192.168.1.0网段为例,最大的主机地址 192.168.1.255代表该网段的广播地址发到该地址的数据包被所有的主机接收255.255.255.255在所有网段中都代表广播地址。广播的发送步骤:1.创建用户报套接字2.缺省创建的套接字不允许广播数据包,需要设置属性:setsockopt可以设置套接字属性3.接收放地址指定为广播地址4.指定端口信息5.发送数据包广播发送实例:#include <stdio.h>#include < 阅读全文
posted @ 2012-07-06 20:31 孟浩依然 阅读(339) 评论(0) 推荐(0)
组播
摘要:单播方式只能发给一个接收方广播方式发给所有的主机。过度的广播会大量占用网络带宽,造成广播风暴,影响正常通信。组播(又称为多播)是一种折中的方式。只有加入某个多跛足的主机才能收到数据。多播方式既可以发给多个主机,又能避免像广播那样带来过多的负荷(每台主机要到传输层才能判断广播包是否要处理)网络地址:A类地址:第1个字节为网络地址,其他3个字节为主机地址第一个字节的最高位固定为0地址范围 1.0.0.1 - 126.255.255.255B类地址:第一个和第二个字节为网络地址,其他2个字节为主机地址,第一个字节的前两位固定为10地址范围:128.0.0.1 - 191.255.255.255C类. 阅读全文
posted @ 2012-07-06 20:31 孟浩依然 阅读(275) 评论(0) 推荐(0)
TCP、UDP服务器模型
摘要:在网络程序里面,通常都是一个服务器处理多个客户机,为了出个多个客户机的请求,服务器端的程序有不同的处理方式。目前最常用的服务器模型:循环服务器:循环服务器在同一时刻只能响应一个客户端的请求。并发服务器:并发服务器在同一时刻可以响应多个客户端的请求。循环服务器模型:TCPsocket(…);bind(…);listen();while(1){ accept(); while(1) { recv(); process(); send();}close();}UDPsocket();bind();while(1){ recvfrom(); process(); sendto();}并发服务器:为了弥 阅读全文
posted @ 2012-07-06 20:30 孟浩依然 阅读(3141) 评论(0) 推荐(0)
IO模型
摘要:linux下主要有四种模型阻塞 IO:最常用、简单、效率低read,recv,recvfromwrite,send,sendto,accept,connect非阻塞IO:可防止进程则阻塞在IO操作上,需要轮询当一个应用程序使用了非阻塞模式的套接字,它需要使用一个循环来不停的测试是否一个文件描述符有数据可读。浪费CPU资源。fcntl函数是设置套接字的标志int fcntl(int fd,int cmd ,long arg)例如: int flag; flag = fcntl(sockfd,F_GETFL,0) flag|=O_NONBLOCK; fcntl(sockfd,F_SETFL,fl. 阅读全文
posted @ 2012-07-06 20:29 孟浩依然 阅读(553) 评论(0) 推荐(0)
linux网络编程
摘要:网络互联促成TCP/IP协议的产生,它包括 用来检测网络传输中差错的传输控制协议TCP,专门负责对不同网络进行互联的互联网协议IPTCP/IP协议成为Internet中的世界语。两类重要的体系结构: OSI与 TCP/IPOSI开放系统互联模型应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,它是个理想化的模型。TCP/IP一共有四层应用层 (Telnet、FTP、HTTP、DNS、SMTP等)传输层 (TCP和UDP)网络层 (IP、ICMP、IGMP)网络接口和物理层 (以太网、令牌环网、FDDI等)TCP与UDP同为传输层协议,TCP有连接,可靠,UDP无连接,不可靠TCP(传 阅读全文
posted @ 2012-07-06 20:28 孟浩依然 阅读(666) 评论(0) 推荐(0)