2022年2022年计算机网络实验-网络编程 .pdf
《2022年2022年计算机网络实验-网络编程 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机网络实验-网络编程 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验七网络编程一、实验目的1.了解套接字 (socket)的概念2.熟悉利用 winsock 在 Windows 下进行网络编程的基本方法二、实验设备1.交换机 1 台2.PC 机 12台3.VC+6.0 软件三、预备知识1.Socket简介Socket通常也称作 套接字 ,最初应用在 UNIX 上,并很快成为 UNIX 上最流行的网络编程接口之一。后来微软将它引入到WINDOWS 中,称为Winsock。2.TCP/IP 协议与 WinSock 网络编程接口的关系WinSock 是对 TCP/IP 协议的一种封装,可通过调用WinSock 的接口函数来调用 TCP/IP 的各种功能。例如用T
2、CP/IP 协议发送数据,可以使用WinSock 的接口函数 Send()来调用 TCP/IP 的发送数据功能,至于具体怎么发送数据,WinSock 已经封装好了这种功能。3.WinSock 编程简单流程WinSock编程分为服务器端和客户端两部分,服务器端的大体流程如下:1)初始化 WinSock DLL库int WSAStarup( WORD wVersionRequested,LPWSADATA lpWsAData ) wVersionRequested: WinSock 的版本,LPWSADATA:指向 WSDATA结构的指针。调用这个接口函数可以初始化WinSock 。2)创建套接字
3、 (Socket) SOCKET Socket(int af,int type,int protocol) af: 协议簇,对于 TCP/IP,为 AF_INET ;type:Socket类型, TCP为 SOCK_STREAM,UDP 则为 SOCK_DRGAM;protocol :通信协议,默认为0,即 TCP/IP 协议。套接字是 WinSock通信的核心, WinSock通信的所有数据传输,都是通过套接字来完成的。套接字包含了两个信息:一个是IP 地址,一个是 Port 端口号,使用这两个信息,就可以确定网络中的任何一个通信节点。3)通过绑定函数把套接字与目的地址建立联系。int bi
4、nd(SOCKET s,const struct sockaddr FAR* name,int namelen) ; * name:指向类型为 struct sockaddr 套接字地址结构的指针,namelen:name的长度。通常套接字地址结构定义如下:struct sockaddr_in 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - short sin_family ; u_short sin_prot ; struct
5、 in_addr sin_addr ; char sin_sero8 ; 此结构包含了需要建立连接的本地的地址,包括地址族、IP 和端口等信息。sin_family字段必须把它设为AF_INET ,这是告诉 WinSock使用的是 IP 地址族。 sin_prot就是要用来通讯的端口号。sin_addr 就是要用来通讯的 IP 地址信息。另外还要注意“ big - endian”和“little- endian”的概念。因为各种不同的 计 算 机 处 理 数 据 时 的 方 法 是 不 一 样 的 。 Intel X86 处 理 器 上 是 用little-endian形式来处理多字节数据,即
6、先处理(读、写)的为数据的低位字节,后处理的为数据的高位字节;而Motorola的 PowerPC 系列 CPU使用big-endian ,处理顺序正好相反。例如,从内存地址0 x0000 开始有以下数据:0 x0000 0 x12 0 x0001 0 x34 0 x0002 0 xab 0 x0003 0 xcd 如 果 我 们 去 读 取 一 个 地 址为 0 x0000 的 四 个 字节 变 量 ,若 字 节 序为big-endian ,则读出结果为0 x1234abcd;若字节序位 little-endian,则读出结果为 0 xcdab3412。如果我们将 0 x1234abcd写入
7、到以 0 x0000开始的内存中,则结果为 big-endian little-endian 0 x0000 0 x12 0 xcd 0 x0001 0 x23 0 xab 0 x0002 0 xab 0 x34 0 x0003 0 xcd 0 x12 互联网标准采用big-endian ,所以进行网络传输时必须把主机字节转换成网络字节的顺序。 WinSock API 提供了几个转化函数。把主机字节转化成网络字节的函数:u_long htonl(u_long hostlong); u_short htons(u_short hostshort); 把网络字节转化成主机字节的函数:u_long
8、ntohl(u_long netlong); u_short ntohs(u_short netshort) ; 这样,设置 IP 地址和 port 端口时,就必须把主机字节转化成网络字节后,才能用 Bind() 函数来绑定套接字和地址。4)当绑定完成之后,服务器端必须建立一个监听队列来接收客户端的连接请求。int listen(SOCKET s,int backlog); backlog: 正在等待连接的最大队列长度这个函数可以把套接字转成监听模式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
9、- - - 第 2 页,共 8 页 - - - - - - - - - 5)接受客户端的请求int accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen); 以上已经完成了一个服务器的建立。客户端的建立的流程则是初始化WinSock,然后创建Socket 套接字,再 使 用 int connect(SOCKET s,const struct sockaddr FAR* name,int namelen); 来连接服务端。4.创建服务器端和客户端的实例:1)服务器端的创建:WSADATA wsd; SOCKET sListen; S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年计算机网络实验-网络编程 2022 计算机网络 实验 网络 编程
限制150内