1、Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室陈 兵 http:/http:/ Email:cb_ Email:cb_南京航空航天大学南京航空航天大学计算机网络研究室计算机网络研究室20082008网络通信实现技术第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航
2、天大学网络研究室课程体系 计算机网络通信基础 计算机 网络基础 TCP/IP 协议分析 网络与信息安全网络软件通信技术 软件实验:停等协议ARQ实现、网络模拟器NS、SOCKET通信硬件实验:网络工程,路由器和交换机 网络硬件通信技术 第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室教学目的及要求教学目的及要求 掌握计算机网络通信编程技术掌握计算机网络通信编程技术 熟悉熟悉Unix/LUnix/Linuxinux环
3、境的使用环境的使用教材教材 有关有关SocketSocket编程技术编程技术 有关有关Unix/LinuxUnix/Linux使用手册使用手册先修课程先修课程?计算机网络基础计算机网络基础?TCPIPTCPIP原理原理评分标准评分标准 上机作业上机作业第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室Reviewn n通信方式通信方式:单播单播 unicastunicast 组播组播 multicastmultica
4、st 广播广播 broadcastbroadcastn n网络体系结构:网络体系结构:分层分层 服务、协议和接口服务、协议和接口 ISO/OSIISO/OSI TCP/IPTCP/IPn nTCPIPTCPIP 地址:地址:MAC/IP/MAC/IP/域名域名 分层:网络层,传输层,应用层分层:网络层,传输层,应用层 协议:协议:ARP/RARPARP/RARP IPIP ICMP TCP UDP ICMP TCP UDP 接口:接口:SOCKET SOCKET 传输层之上的接口传输层之上的接口第一章 概述Copyright ChenBing Email:Copyright ChenBing
5、Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室主要内容n n计算模式简介计算模式简介n nSOCKETSOCKET编程技术编程技术n n基本实验:基本实验:实验实验1 1:PINGPING程序的实现程序的实现 *尾数尾数0 0,1 1,2 2,9 9 实验实验2 2:TRACERTTRACERT程序的实现程序的实现 *尾数尾数3 3,4 4,5 5 实验实验3 3:SCANNERSCANNER扫描程序实现扫描程序实现*尾数尾数6 6,7 7,8 8,n n高级实验高级实验 实验实验4 4:基于:基于IPIP组播
6、的通信实现组播的通信实现 *实验实验5 5:ARQARQ模拟程序实现模拟程序实现 *实验实验6 6:IPIP欺骗程序的实现欺骗程序的实现 *实验实验7 7:SnifferSniffer程序的实现程序的实现*实验实验8 8:HTTPHTTP代理程序的实现代理程序的实现 *实验实验9 9:简单:简单FTPFTP程序的实现程序的实现 *n nDEMODEMO第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室1 工作模式变迁
7、n n主机终端方式主机终端方式 一切由主机做主一切由主机做主n n文件服务器方式文件服务器方式 磁盘共享磁盘共享n n模式模式 减轻网络负载,查询减轻网络负载,查询 商业逻辑放到商业逻辑放到ClientClientn n和模式和模式 改进信息表示方式改进信息表示方式 三层构架,将商业逻辑放到三层构架,将商业逻辑放到ServerServer 减轻安装维护工作减轻安装维护工作第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研
8、究室n特点:一切由主机做主终端不能独立工作,使用主机的CPU、MEM等终端之间不能直接通信普通终端不支持GUI工作模式的变迁:主机终端第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室工作模式的变迁:文件服务器n n特点:特点:文件服务器用来进行大文件服务器用来进行大容量数据存储和共享容量数据存储和共享各主机有自己的资源,各主机有自己的资源,同时可以访问服务器的同时可以访问服务器的共享资源共享资源网络流量较大,如从服
9、网络流量较大,如从服务器查找一条记录务器查找一条记录主机之间可以直接通信主机之间可以直接通信第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室工作模式的变迁:C/S模式n n特点:将应用分成两部分将应用分成两部分 服务端负责数据处理和查询服务端负责数据处理和查询 客户端负责结果表示客户端负责结果表示GUIGUI减轻网络负载,查询减轻网络负载,查询商业逻辑在商业逻辑在ClientClient第一章 概述Copyrigh
10、t ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室工作模式的变迁:B/S模式n n特点:改进信息表示方式改进信息表示方式三层构架,将商业逻三层构架,将商业逻辑放到辑放到ServerServer减轻安装维护工作减轻安装维护工作WWW Server第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室
11、南京航空航天大学网络研究室2 SOCKET编程技术n n什么是SOCKETn nSOCKET域、类型、协议n nSOCKET提供的服务及工作流程n nSOCKET常用函数第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET简介n n什么是SOCKETn nSOCKET类型n n工作流程n n常用函数第一章 概述Copyright ChenBing Email:Copyright ChenBing Email
12、:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室什么是SOCKET?n n是是TCP/IPTCP/IP传输层的接口传输层的接口n n是是BSD UNIXBSD UNIX提供的网络应用编程接口提供的网络应用编程接口n n采用客户机采用客户机/服务器的通信机制,使网络客户机方服务器的通信机制,使网络客户机方和服务器方通过和服务器方通过SocketSocket实现网络之间的连接和数实现网络之间的连接和数据交换据交换n n提供了一系列的系统调用,使用这些系统调用可以提供了一系列的系统调用,使用这些系统调用可以实现实现TCPTCP,
13、UDPUDP,ICMPICMP和和IPIP等多种网络协议之间等多种网络协议之间的通信的通信 FTP,TelnetFTP,Telnet使用使用TCPTCP协议协议 SNMPSNMP使用使用UDPUDP协议协议 各种组播和广播使用何种协议?各种组播和广播使用何种协议?n n可以构造典型的可以构造典型的Client/ServerClient/Server模式应用模式应用第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SO
14、CKET应用n n创建C/S方式的服务Servicen n如何决定一个服务?IP Address IP Address PortPortn nPort分类Well-known port Well-known port(0 010231023)FTP:20/21 telnet:23 Pop3:110 SMTP:25FTP:20/21 telnet:23 Pop3:110 SMTP:25Registered portRegistered port OracleOracle:15211521,15261526 SybaseSybase:50005000第一章 概述Copyright ChenBing
15、 Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET域 AF_UNIXAF_UNIX Unix domain sockets Unix domain sockets AF_INETAF_INET Internet IP ProtocolInternet IP Protocol AF_IPXAF_IPX Novell IPX Novell IPX AF_APPLETALKAF_APPLETALK Appletalk DDPAppletalk DDP AF_
16、X25AF_X25 Reserved for X.25 projectReserved for X.25 project.第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET类型 SOCK_STREAM SOCK_STREAM stream(connection)socketstream(connection)socket SOCK_DGRAMSOCK_DGRAM datagram(conn.less)so
17、cket datagram(conn.less)socket SOCK_RAW SOCK_RAW raw socket raw socket 第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室protocol IPPROTO_IP IPPROTO_IP Internet ProtocolInternet Protocol IPPROTO_ICMP IPPROTO_ICMP Internet Control Messa
18、ge ProtocolInternet Control Message Protocol IPPROTO_IGMP IPPROTO_IGMP Internet Group Management ProtocolInternet Group Management Protocol IPPROTO_TCP IPPROTO_TCP Transmission Control ProtocolTransmission Control Protocol IPPROTO_IPPROTO_UDPUDP UserDataGramUserDataGram Protocol Protocol .第一章 概述Copy
19、right ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室Servicen n面向连接n n无连接第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室无连接工作流程第一章 概述Copyright ChenBing Email:Copyright ChenBing Ema
20、il:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室面向连接的工作流程第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET基本函数n n创建创建SOCKET(C/S)SOCKET(C/S)n n绑定绑定SOCKET(C/S)SOCKET(C/S)n n连接连接(C C)n n设置请求队列设置请求队列(S)S)n n从队列取一个请求从队列
21、取一个请求(S)S)n n发送数据发送数据(C/S)C/S)n n接收数据接收数据(C/S)C/S)n n关闭关闭SOCKET(C/S)SOCKET(C/S)第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET基本函数(1)n n名称:名称:SOCKETSOCKETn n功能:创建一个功能:创建一个SOCKETSOCKET标识标识n n格式:格式:socket(int familysocket(int fa
22、mily,int typeint type,int int protocol)protocol);n n入口:入口:family family 可以选可以选 AF_UNIXAF_UNIX:UNIX UNIX 互连网协议;互连网协议;AF_INETAF_INET:Internet Internet 协议协议(常用常用);AF_NS AF_NS:Xerox NS Xerox NS 协议;协议;typetype可选:可选:sock_STREAMsock_STREAM:流管套流管套 sock_DGRAMsock_DGRAM:数据报管套数据报管套 sock_RAWsock_RAW:原始管套原始管套 pr
23、otocolprotocol,一般为一般为0 0n n出口:出口:0 0 socketsocket标识符标识符第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室举例:举例:STEP 1STEP 1:通过通过vivi创建一个创建一个test.ctest.c文件文件#includeinclude#include#includemain()main()int sdint sdsd=socket(AF_INETsd=sock
24、et(AF_INET,SOCK_STREAM SOCK_STREAM,0)0);printf(printf(“sd=%s n sd=%s n”,sd);,sd);STEP 2STEP 2:通过通过cccc编译并生成可执行文件编译并生成可执行文件cc-o test test.ccc-o test test.cSTEP 3STEP 3:执行执行testtest文件,查看运行结果文件,查看运行结果 第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室
25、南京航空航天大学网络研究室SOCKET基本函数(2)n n名称:名称:BINDBINDn n功能:功能:为一个没有名字的为一个没有名字的套接字套接字指定一个名字指定一个名字n n格式:格式:bind(int sockfd,struct sockaddr bind(int sockfd,struct sockaddr*myaddr,int addrlen)*myaddr,int addrlen)n n入口:入口:sockfd:sockfd::已经创建的已经创建的 socketsocket标识符;标识符;myaddrmyaddr:服务方地址,指明服务方的地址和服务端口号服务方地址,指明服务方的地址
26、和服务端口号 addrlenaddrlen:地址长度地址长度n n出口:出口:0 0 成功成功 0 0 失败失败n n环境:环境:Unix WindowsUnix Windowsn n引用:引用:#includeinclude#include#include第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室通用socket地址结构定义n nstruct sockaddr u_char sa_len;/*地址总长度*/
27、u_char sa_family;/*AF_INETAF_INET:TCP/IPTCP/IP地地址址*/char sa_data14;/*address*/第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室TCP/IP的socket地址结构定义n nstruct sockaddr_instruct sockaddr_in u_char sin_len;/*u_char sin_len;/*地址总长度地址总长度*/*/
28、u_char sin_family;u_char sin_family;u_short sin_port;/*u_short sin_port;/*协议端口号协议端口号*/*/struct in_addr sin_addr;/*IP addr*/struct in_addr sin_addr;/*IP addr*/char sin_zero8;/*un_used*/char sin_zero8;/*un_used*/struct in_addr u_long s_addr;struct in_addr u_long s_addr;第一章 概述Copyright ChenBing Email:C
29、opyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET基本函数(3)n n名称:名称:CONNECTCONNECTn n功能:与服务器建立连接功能:与服务器建立连接n n格式:格式:connect(int sockfd,struct sockaddr*servaddr,connect(int sockfd,struct sockaddr*servaddr,int addrlen);int addrlen);n n入口:入口:sockfd:sockfd::已经绑定的已经绑定
30、的 socketsocket标识符;标识符;servaddrservaddr:服务方地址,指明服务方的地址和服务端口号服务方地址,指明服务方的地址和服务端口号 addrlenaddrlen:地址长度地址长度n n出口:出口:0 0 成功成功 0 0 失败失败n n环境:环境:Unix WindowsUnix Windowsn n引用:引用:#includeinclude#include#includen n备注:仅适用于备注:仅适用于ClientClient第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天
31、大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET基本函数(4)n n名称:名称:LISTENLISTENn n功能:服务器设置请求队列数功能:服务器设置请求队列数n n格式:格式:listen(sockfd,max_numb)listen(sockfd,max_numb);n n入口:入口:sockfd:sockfd::已经绑定的已经绑定的 socketsocket标识符;标识符;max_numbmax_numb:能同时处理的请求数能同时处理的请求数n n出口:出口:0 0 成功成功 0 0 失败失败n n环境:环境:Unix Windo
32、wsUnix Windowsn n引用:引用:#includeinclude#include#includen n备注:仅适用于备注:仅适用于 Server Server第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET基本函数(5)n n名称:名称:ACCEPTACCEPTn n功能:服务器从队列中取出一个请求进行处理功能:服务器从队列中取出一个请求进行处理n n格式:格式:new_sd=new_sd=
33、accept(sockfd)accept(sockfd);n n入口:入口:sockfd:sockfd::socketsocket标识符;标识符;n n出口:出口:0 0 新的新的socketsocket标识符标识符 0 0 失败失败n n环境:环境:Unix WindowsUnix Windowsn n引用:引用:#includeinclude#include#includen n备注:仅适用于备注:仅适用于 Server Server,以后客户方与服务方的通信,以后客户方与服务方的通信均使用新的均使用新的socketsocket标识符,原标识符继续监听客户的标识符,原标识符继续监听客户的请
34、求请求第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET基本函数(6)n n名称:名称:SEND/RECVSEND/RECVn n功能:进行数据的发送和接收功能:进行数据的发送和接收n n格式:格式:send(int sockfd,char*buff,int nbytes,int flag);send(int sockfd,char*buff,int nbytes,int flag);recv(int s
35、ockfd,char*buff,int nbytes,int flags);recv(int sockfd,char*buff,int nbytes,int flags);n n入口:入口:sockfd:sockfd::socketsocket标识符;标识符;buffbuff:发送的内容或者接收缓冲区发送的内容或者接收缓冲区 nbytesnbytes:发送或者接收缓冲区的长度发送或者接收缓冲区的长度 flagflag:数据类型,缺省为数据类型,缺省为0 0 MSG_OOBMSG_OOB:发送或接收加急数据;发送或接收加急数据;MSG_PEEKMSG_PEEK:观察输入报文;观察输入报文;MSG
36、_DONTROUTEMSG_DONTROUTE:旁路路由选择;旁路路由选择;n n出口:出口:0 0 实际发送或接收的字符数实际发送或接收的字符数第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室SOCKET基本函数(7)n n名称:名称:CLOSECLOSEn n功能:关闭功能:关闭SocketSocketn n格式:格式:close(sockfd)close(sockfd);n n入口:入口:sockfd:soc
37、kfd::欲关闭的欲关闭的socketsocket标识符;标识符;n n出口:出口:0 0 成功成功 0 0 失败失败n n环境:环境:Unix WindowsUnix Windowsn n引用:引用:#includeinclude#include#include第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室基本函数综合举例 服务方n n1)创建socketn n2)绑定n n3)设置监听队列n n4)监听n n
38、5)接收一包数据,并显示n n6)关闭socket第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室基本函数综合举例 客户方n n1)创建socketn n2)绑定n n3)与服务方连接n n4)发送一串信息Hello,World!n n5)关闭socket第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航
39、天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室例:client端#include#include#include#include#include#include#include#include#include#include#include include#include#include#define PROTOPORT 5193#define PROTOPORT 5193/*default protocol port/*default protocol port number*/number*/extern int errno;extern int errno;char
40、 localhost=char localhost=localhost;/*default localhost;/*default host name*/host name*/第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室main(argc,argv)main(argc,argv)int argc;int argc;char*argv;char*argv;struct hostent*ptrh;/*pointer
41、 to a host table entry*/struct hostent*ptrh;/*pointer to a host table entry*/struct protoent*ptrp;/*pointer to a protocol table entry*/struct protoent*ptrp;/*pointer to a protocol table entry*/struct sockaddr_in sad;/*structure to hold an IP address*/struct sockaddr_in sad;/*structure to hold an IP
42、address*/int sd;/*socket descriptor*/int sd;/*socket descriptor*/int port;/*protocol port number*/int port;/*protocol port number*/char*host;/*pointer to host name*/char*host;/*pointer to host name*/int n;/*number of characters read*/int n;/*number of characters read*/char buf1000;/*buffer for data
43、from the server*/char buf1000;/*buffer for data from the server*/第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室memset(char*)&sad,0,sizeof(sad);/*memset(char*)&sad,0,sizeof(sad);/*清除原地址结构清除原地址结构 */*/sad.sin_family=AF_INET;/*set fami
44、ly to Internet*/sad.sin_family=AF_INET;/*set family to Internet*/*/*检查命令行参数是否合法,检查命令行参数是否合法,hostname,porthostname,port有无输入有无输入*/*/ptrh=gethostbyname(host);ptrh=gethostbyname(host);memcpy(&sad.sin_addr,ptrh-h_addr,ptrh-memcpy(&sad.sin_addr,ptrh-h_addr,ptrh-h_length);h_length);/*Create a socket.*/*Cre
45、ate a socket.*/sd=socket(AF_INET,SOCK_STREAM,ptrp-p_proto);sd=socket(AF_INET,SOCK_STREAM,ptrp-p_proto);if(sd 0)if(sd 0)fprintf(stderr,socket creation failedn);fprintf(stderr,socket creation failedn);exit(1);exit(1);第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网
46、络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室/*/*/*/*Connect the socket to the specified server.*/Connect the socket to the specified server.*/if(connect(sd,(struct sockaddr*)&sad,sizeof(sad)0)if(connect(sd,(struct sockaddr*)&sad,sizeof(sad)0)while(n 0)write(1,buf,n);write(1,buf,n);n=recv(sd,buf,sizeof(buf),0);n=r
47、ecv(sd,buf,sizeof(buf),0);closesocket(sd);/*Close the socket.*/closesocket(sd);/*Close the socket.*/exit(0);/*Terminate the client program gracefully.*/exit(0);/*Terminate the client program gracefully.*/第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大
48、学网络研究室南京航空航天大学网络研究室例:server端#include#include#include#include#include#include#include#include#include#include#include include#include#include#define PROTOPORT 5193#define PROTOPORT 5193/*default protocol port/*default protocol port number*/number*/#define QLEN 6/*#define QLEN 6/*队列长队列长*/*/int visits=
49、0;/*int visits=0;/*客户连接数客户连接数*/*/第一章 概述Copyright ChenBing Email:Copyright ChenBing Email:cb_cb_ 南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室南京航空航天大学网络研究室main(argc,argv)main(argc,argv)int argc;int argc;char*argv;char*argv;struct hostent*ptrh;/*pointer to a host table entry*/struct hostent*ptrh;/*pointer t
50、o a host table entry*/struct protoent*ptrp;/*pointer to a protocol table entry*/struct protoent*ptrp;/*pointer to a protocol table entry*/struct sockaddr_in sad;/*structure to hold servers address*/struct sockaddr_in sad;/*structure to hold servers address*/struct sockaddr_in cad;/*structure to hold