文档介绍:LINUXC编程教师:中国地质大学朱静第五讲网络通信SOCKET编程SOCKET(套接字)概述SOCKET编程SOCKET概述1982-BerkeleySoftwareDistributions操作系统引入了sockets作为本地进程之间通信的接口1986-Berkeley扩展了socket接口使之支持UNIX下的TCP/IP通信现在很多应用(FTP,,SMTP)都依赖这一接口通过套接字进行的进程通信通常是建立在客户/服务器模式上SOCKET概述Socket是一个编程接口是一种特殊的文件描述符(everythinginUnixisafile)并不仅限于TCP/IP通信协议面向连接(TransmissionControlProtocol-TCP/IP)无连接(UserDatagramProtocol-workPacketExchange-IPX)SOCKET概述Winsock从BerkeleySockets(Unix),微软又进一步提供了Winsock2接口。Winsock2支持多种底层的网络协议,如TCP/IP、ATM、IPX等SOCKET概述Berkeleysocket和WinSock的不同BerkeleySocket是一个int数据类型,WinSockSocket则是SOCKET数据类型WinSock中以SOCKET_ERROR代表出错,BerkeleySocket以-1代表出错WinSock应用必须首先调用WSAStartup()初始化,并在结束前调用WSACleanup()释放资源客户/服务器模式客户/服务器模式(Client/Servermodel),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的服务器端和客户端典型事件序列:服务器端:(如FTP为21),接收客户请求;;,处理该请求并发送应答信号。激活一个新进程来处理这个客户请求。服务完成后,关闭此新进程与客户的通信链路,终止。4. 返回第二步,等待另一客户请求。5. 关闭服务器客户/服务器模式客户端:1. 打开一通信通道,并连接到服务器所在主机的特定端口;2. 向服务器发服务请求报文,等待并接收应答;继续提出请求......3. 请求结束后关闭通信通道并终止。 从上面所描述过程可知:,因此编码不同。。只要系统运行,该服务进程一直存在,直到正常或强迫终止。SOCKET类型Linux中的套接字类型有三种不同的划分方法:按域分类AF_LOCAL(AF_UNIX)客户/客户/6客户/服务器在IPV6网络上按传输类型分类按协议分类以协议为参数的系统调用以0作为参数值时,表示“正确的协议”,既自动选择默认协议。SOCKET类型按传输类型分类SOCK_STREAM流式套接字提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。文件传送协议(FTP)即使用流式套接字。 SOCK_DGRAM提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。网络文件系统(NFS)使用数据报式套接字。SOCK_SEQPACKETSOCK_RAW对新协议的支持