摘要: POSIX标准定义的头文件 目录项 文件控制 文件名匹配类型 路径名模式匹配类型 组文件 网络数据库操作 口令文件 正则表达式 TAR归档值 终端I/O 符号常量,文件是Linux的系统调用,好比Windows中的windows.h 文件时间 字符扩展类型------------------------- INTERNET定义 套接字本地接口 INTERNET地址族 传输控制协议定义------------------------- 内存管理声明 Select函数 套接字借口 文件状态 进程时间 基本系统数据类型(如pid_t,size_t等) UNIX域套接字定义 系统名 进程控制----- 阅读全文
posted @ 2014-03-13 10:36 大卫酱_David 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 好多程序中都会遇到下列代码段: #ifdef __cplusplus extern “C” { #endif /****************** C语法代码段 ******************/ #ifdef_cplusplus } #endif /* __cpulsplus */ 我们应该知道,__cplusplus是CPP中自定义的宏,表示这是一段CPP的代码,编译器按照C++的方式... 阅读全文
posted @ 2014-03-12 11:14 大卫酱_David 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 1. IPv4l IPv4:32位数表示,通常表示为点分十进制。地址中的每8位字节被转换成一个十进制数。l 单播:分配到单个计算机接口上的地址称为单播地址,该地址仅可以分配到一个接口上。如果网络上其他计算机也配置了该地址,就会发生错误;l 多播:多个计算机可以加入一个多播组,监听某个特定的多播地址。加入该组的每个计算机将收到该多播地址的任何数据。多播地址是D类地址;l 广播:IPv4支持数据广播。这就意味着发送到受限广播地址255.255.255.255的广播数据将被局域网内的每个计算机接收并处理。通常,采用子网广播数据。例如发送到172.31.28.255。IPv4依赖的相关协议:l ARP 阅读全文
posted @ 2014-03-12 10:44 大卫酱_David 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 1. 头文件及库文件头文件:WINSOCK2.H库:WS2_32.LIB库如果是在WINCE中,不支持SOCK2,所以:头文件:WINSOCK.H库:WSOCK32.LIB如果从MSWSOCK.H中使用了扩展API,则需要链接MSWSOCK.DLL2. 初始化Winsock如果调用一个没有初始化过winsock库的相关socket函数,则返回SOCKET_ERROR,另外错误信息是:WSANOTINITIALISED;int WSAStartup(WORD wVersionRequeted, LPWSADATA lpWSAData);l wVersionRequested:指定加载的winso 阅读全文
posted @ 2014-03-11 10:22 大卫酱_David 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 建立好TCP连接后,就可以把得到的套接字当做文件描述符来使用,由此,联系到网络程序里的基本读写函数,write、read;l write函数:Ssize_t write(int fd,const void *buf,size_t nbytes);Write函数将buf中的nbytes字节内容写入到文件描述符中,成功返回写的字节数,失败返回-1.并设置errno变量。在网络程序中,当我们向套接字文件描述写数据时有两种可能:1. write的返回值大于0,表示写了部分数据或者是全部的数据,这样用一个while循环不断的写入数据,但是循环过程中的buf参数和nbytes参数是我们自己来更新的,也就是 阅读全文
posted @ 2014-03-10 12:23 大卫酱_David 阅读(1323) 评论(0) 推荐(1) 编辑
摘要: 解说基本套接字函数,这里我们不考虑适用于服务器的大吞吐量并发性技术。socket函数为执行网络I/O,一个进程必须做的事情就是调用socket函数,指定期望的通信协议类型。使用IPv4的TCP、使用IPv6的UDP、UNIX域字节流协议等。l 其中family参数指明协议族,或者称为协议域;l type参数指明套接字类型;l protocol参数应设为某个协议类型常值,或者设为0;AF_INET:IPv4;AF_INET6:IPv6;SOCK_STREAM:TCP;SOCK_DGRAM:UDP;往往我们更多的使用一些组合:基本函数流程:调用socket的目的在于获取一个新建的socket句柄, 阅读全文
posted @ 2014-03-10 11:22 大卫酱_David 阅读(699) 评论(0) 推荐(0) 编辑
摘要: IP地址未必总是指向远端主机。尤其是开发阶段,通常需要连接自己本地主机上的套接字。多数系统都定义了环回接口(loopback interface)。和网卡接口不通,这个接口和硬件无关,是完全虚拟的。发送到回环接口上的数据立刻会在同一个接口上被接收。回环地址一般都是127.0.0.1,都定义在hosts文件中。 阅读全文
posted @ 2014-03-10 11:09 大卫酱_David 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 这里介绍两组地址转换函数,他们在ASCII字符串与网络字节序的二进制之间转换网际地址。l inet_aton、inet_addr和inet_ntoa在点分十进制数串(如:“127.0.0.1”)与它的长度为32位的网络字节序二进制值间转换IPv4地址。l 两个新的函数:inet_pton和inet_ntop对于IPv4和IPv6都适用。l inet_addr()将一个char型字符串转换为32位的IPv4网络字节序,如果失败则返回INADDR_NONE;该函数存在一个问题,所有223个可能的二进制值都是有效的IP地址(从0.0.0.0~255.255.255.255)!!!!但是当出错时该函数 阅读全文
posted @ 2014-03-05 11:25 大卫酱_David 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 考虑一个16位整数,它由2个字节组成。内存存储这两个字节的方法有两种:一种是将低序字节存储在起始地址,这叫做小端(little-endian)字节序;另外一种方法是将高序字节存储在起始地址,这成为大端(big-endian)字节序;也就是说2个字节或以上的数据,需要考虑大小端问题。1个字节的不需要考虑.......图中显示,16位值,8位低字节序保存在起始地址的是小端字节序;8位高序字节保存在其实地址的大端字节序;主机序和网络序的转换:网络协议都使用大端字节序,也就是高序字节存储在起始地址,但主机不确定是大端还是小端。所以我们在将16位及以上的数据发送到网络中时,需要进行字节序的转换:---- 阅读全文
posted @ 2014-03-04 20:06 大卫酱_David 阅读(453) 评论(0) 推荐(0) 编辑
摘要: IPv4套接字地址结构:套接字都需要有一个指向套接字地址结构的指针作为参数。每个协议簇都定义它自己的套接字地址结构。这些结构的名字均已sockaddr_开头,并以对应每个协议族的唯一后缀结尾。windows引入了winsock2后,程序在link时需要的库文件也发生了变化。winsock.h对应的是wsock32.lib,而winsock2需要的是ws2_32.lib。这是需要注意的地方,否则连编会失败。同时,有些程序是include了。这个头文件本身包含了,这是就需要注意include的顺序,必须在之前include,才能避免重复定义的问题。#include #pragma comment( 阅读全文
posted @ 2014-03-04 15:36 大卫酱_David 阅读(1885) 评论(0) 推荐(0) 编辑
摘要: 套接字(socket)当今已成为最流行的网络通信应用程序接口。套接字最初是由加利福尼亚大学Berkeley分校为Unix操作系统开发的网络通信接口,后来它又被移植到DOS与Windows系统,特别是近几年来互联网络在全世界范围内被广泛普及并且增长迅猛,进一步奠定了它在网络通信程序开发领域的主宰地位。跨系统网络互联的呼声在我国也越来越高。近来,在开发的银行与证券联网系统中,我们尝试做了由Unix Sockets到Windows Sockets通信应用程序的移植,有所体会,望能将移植过程中应该注意的几点问题与热心于这方面工作的人们共同作以探讨,以期能起到抛砖引玉的作用。1. 修改头文件的定义Uni 阅读全文
posted @ 2014-03-04 14:18 大卫酱_David 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 在开发通信程序之前,都要先确定这些程序相互通信所使用的协议(protocol),在深入设计前,我们都需要先从高层次来判断通信由哪个程序发起以及相应在何时产生。举例来说,一般认为web服务器是一个长时间运行的程序(即守护程序,daemon),它只响应来自网络的请求时才发送网络消息。大多数网络应用都是划分成客户端(client)和服务器(server)来组织的。往往是客户端发起请求,但也有复杂网络中需求异步回调(asynchronous callback)通信,也就是服务器向客户端发起请求。TCP/IP的焦点是协议簇:当前通用的IP协议,泛指IPv4,当然,现在也必须要考虑IPv6的情况,渐渐的以 阅读全文
posted @ 2014-03-04 13:21 大卫酱_David 阅读(410) 评论(0) 推荐(0) 编辑