清华计算机系程设小学期_Socket网络编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:80 大小:4.6MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

清华计算机系程设小学期_Socket网络编程.ppt

清华计算机系程设小学期_Socket网络编程.ppt

预览

免费试读已结束,剩余 70 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四讲主要内容B/S模式和C/S模式网络编程实例:即时通信系统即时通信系统:功能需求78什么是Socket1、基本概念端口号为了区分一台主机接收到的数据包应该递交给哪个进程来进行处理,使用端口号TCP端口号与UDP端口号独立端口号一般由IANA(InternetAssignedNumbersAuthority)管理众所周知端口:1~1023,1~255之间为大部分众所周知端口,256~1023端口通常由UNIX占用注册端口:1024~49151动态或私有端口:49152~65535使用socket实现网络通信配置一个socket需要五种信息:本地的IP地址、本地的协议端口远程的IP地址、远程的协议端口连接所使用的协议打个比方:如果把IP数据包的投递过程看成是给远方的一位朋友寄一封信,那么:IP地址就是这位朋友的所在位置,如北京清华大学计算系(依靠此信息进行路由)端口号就是这位朋友的名字(依靠这个信息最终把这封信交付给这位收信者)字节序大尾端(Big-Endian):字节的高位在内存中放在存储单元的起始位置小尾端(Little-Endian):与大尾端相反网络字节序:NetworkByteOrder使用统一的字节顺序,避免兼容性问题主机字节序:HostByteOrder不同机器的HBO与CPU的设计有关,可能不一样Motorola68K系列,HBO与NBO是一致的IntelX86系列,HBO与NBO不一致字节排序函数htonl4字节主机字节序转换为网络字节序ntohl4字节网络字节序转换为主机字节序htons2字节主机字节序转换为网络字节序ntohs2字节网络字节序转换为主机字节序阻塞通信与非阻塞通信阻塞方式:套接字进行I/O操作时,函数要等待到相关的操作完成以后才能返回,对提高处理机的利用率不利,但编程简单。非阻塞方式:套接字进行I/O操作时,无论操作成功与否,调用都会立即返回。阻塞方式编程简单一个套接口的默认操作模式为阻塞,可以调用函数ioctlsocket()进行设置。WindowsSocket的由来UCBerkeley为UNIX系统开发出了一套套接字(BSDsocket),在此基础上扩展形成了windows套接字。WindowsSocket规范是一套开放的、支持多协议的Windows下的网络编程接口,它规范了Internet协议族(一般为TCP/IP)的API使用.针对多样的网络协议,WindowsSocket统一了操作,简化了编程,使两个进程之间实现连接、通信windowssocket的版本WindowsSocket规范主要有两种版本即1.1和2.0版。主要区别:1.1版本只支持TCP/IP协议,2.0版本可以支持多协议WinSock是TCP/IP编程最低级的WindowsAPI其代码的一部分位于Winsock32.dll中,另一部分位于Windows内核使用WindowsAPI可以编写Internet服务器和客户端程序。应用程序调用WinSock的API实现相互之间的通信编程时的加载事项需要包含头文件Winsock2.h,需要使用库ws2_32.lib,包含办法可以用语句来告诉编译时调用该库#pragmacomment(lib,”ws2_32.lib”)如果使用VisualC++6.0,可以通过“工程”>“设置”>“工程设置”>“链接”>“对象/库模块”中加入“ws2_32.lib”在新的VisualC++2008上要加入链接库方法:“项目>属性->配置属性->链接器->输入:附加依赖项”中加入要链接的库即可。在QTCreator环境中,需要在.pro文件中增加一行LIBS+=-lwsock32常用网络连接函数:3、有连接的C/S网络通信程序(TCP)3、有连接的C/S网络通信程序(TCP)3、无连接的C/S网络通信程序(UDP)4、WinSockAPI介绍WindowsSocket程序设计注意WSAStartup()各Windows平台支持的WinSock版本WSACleanup()问题WSAGetLastError()问题4、WinSockAPI介绍socket()socket()closesocket()问题4、WinSockAPI介绍connect()sockaddr结构体sockaddr_in结构体in_addr结构体问题43问题bind()46listen()accept()4950514、WinSockAPI介绍问题send()问题recv()问题sendto()recvfrom()4、WinSockAPI介绍一些实用函数字节序转换函数地址转换函数网络信息查询函数65665、用户层网络通信协