第九章Socket网络通信编程9.1网络通信编程的基本概念9.2Socket的概念9.3Socket网络通信编程9.4Socket网络通信编程实例结束9.1网络通信编程的基本概念操作系统和网络操作系统中有大量的功能提供给用户使用,用户有两类。一是人,二是程序。应用程序和系统应用程序。系统调用、应用编程接口API、函数库。TCP/IP网络操作系统。应用程序之间的通信是进程间的通信。客户与服务器:为什么要采用C/S模式?P255并发服务器与重复服务器。主从服务器重复服务器面向连接服务的响应和无连接服务的响应。(返回)9.2Socket的概念套接字(Socket)套接字是一种机制,它使应用程序调用操作系统提供的网络功能类似于文件操作,它是一种应用编程接口(API)。与文件操作不同创建套接字和使用套接字都和网络通信的概念密切相关。创建文件需要路径、文件名、和打开的操作方式等参数,而创建和使用套接字则需要协议簇类型、Socket类型、协议、本地IP地址、远程IP地址、本地端口号、远程端口号等参数。一个完整的socket连接则用一个相关描述:{协议,本地地址,本地端口,远地地址,远地端口}(返回)9.3Socket网络通信编程1.建立服务socket()函数:sockid=socket(af,type,protocol)2.关闭socket函数:intclose(intsockfd);3.bind()函数:bind(sockid,localaddr,addrlen)4.listen()函数:intlisten(intsockfd,intbacklog);5.accept()函数:newsock=accept(sockid,clientaddr,addrlen)6.fork()函数:pid_tfork(void);7.用connect()函数建立连接:connect(sockid,dstaddr,addrlen)8.数据的发送:write(sockid,buff,length)、writev()、send()、sendto()、sendmsg()。9.数据的接收:read(sockid,buff,length)、readv()、recv()、recvfrom()、recvmsg()。10.面向连接客户-服务器模式实现框架11.无连接客户-服务器模式实现框架(返回)面向连接客户-服务器模式实现框架(返回)无连接客户-服务器模式实现框架(返回)9.4Socket网络通信编程实例使用VC++6.0编写的,运行于Windows控制台的,面向连接有服务器和客户程序这是服务器端的程序。定义头文件和使用的结构变量。S1调用WSAStartup()加载Winsock.dll。调用gethostname()和gethostbyname()获取主机名和主机信息,包括IP地址。S2将IP地址转换成字符串,显示主机的IP地址和主机名。S3创建插口。读入服务器使用的端口。填写服务器地址结构。S4捆绑IP地上和端口。进入监听状态(连接队列长度为5)S5循环,从队列中取出连接,并为其提供服务。显示对方的IP地址和使用的端口。读客户机传过来的数据,并显示。S6向客户机发送数据。循环结束。C2这是客户端的程序。前部分是初始化WINSOCK和获取本机的主机名及IP地址,与服务器端的是一样的。C2C3C4C5(返回)