- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机网络
课程设计报告
姓名:
学号:
班级:
指导老师:
湖南科技大学计算机科学与工程学院
2016年 1 月
网络聊天程序的设计与实现
课程设计题目
了解Socket通信的原理,在此基础上编写一个聊天程序。
课程设计内容
1.TCP/IP协议与WinSock网络编程接口的关系
WinSock 并不是一种网络协议,它只是一个网络编程接口,也就是说,它不是协议,但是它可以访问很多种网络协议,你可以把它当作一些协议的封装。现在的 WinSock已经基本上实现了与协议无关。你可以使用WinSock来调用多种协议的功能。那么,WinSock和TCP/IP协议到底是什么关系呢?实际上,WinSock就是TCP/IP协议的一种封装,你可以通过调用WinSock的接口函数来调用TCP/IP的各种功能.例如我想用TCP/IP 协议发送数据,你就可以使用WinSock的接口函数Send()来调用TCP/IP的发送数据功能,至于具体怎么发送数据,WinSock已经帮你封装好了这种功能。
2. WinSock编程简单流程
WinSock编程分为服务器端和客户端两部分,TCP服务器端的大体流程如下:
对于任何基于WinSock的编程首先必须要初始化WinSock DLL库。
int WSAStarup( WORD wVersionRequested,LPWSADATA lpWsAData )。
wVersionRequested是我们要求使用的WinSock的版本。
调用这个接口函数可以初始化WinSock 。
然后必须创建一个套接字(Socket)。
SOCKET Socket(int af,int type,int protocol);
套接字可以说是WinSock通讯的核心。WinSock通讯的所有数据传输,都是通过套接字来完成的,套接字包含了两个信息,一个是IP地址,一个是Port端口号,使用这两个信息,就可以确定网络中的任何一个通讯节点。
当调用了Socket()接口函数创建了一个套接字后,必须把套接字与你需要进行通讯的地址建立联系,可以通过绑定函数bind来实现这种联系。
int bind(SOCKET s,const struct sockaddr FAR* name,int namelen) ;
struct sockaddr_in{
short sin_family ;
u_short sin_port;
struct in_addr sin_addr ;
char sin_sero[8] ;
}
就包含了需要建立连接的本地的地址,包括地址族、IP和端口信息。sin_family字段必须把它设为AF_INET,这是告诉WinSock使用的是IP地址族。sin_port就是要用来通讯的端口号。sin_addr就是要用来通讯的IP地址信息。
在这里,必须还得提一下有关大头(big-endian)小头(little-endian)。因为各种不同的计算机处理数据时的方法是不一样的,Intel X86处理器上是用小头形式来表示多字节的编号,就是把低字节放在前面,把高字节放在后面,而互联网标准却正好相反,所以,必须把主机字节转换成网络字节的顺序。WinSock API提供了几个函数。
把主机字节转化成网络字节的函数;
u_long htonl(u_long hostlong);
u_short htons(u_short hostshort);
把网络字节转化成主机字节的函数;
u_long ntohl(u_long netlong);
u_short ntohs(u_short netshort) ;
这样,设置IP地址和port端口时,就必须把主机字节转化成网络字节后,才能用Bind()函数来绑定套接字和地址。
当绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。
int listen(SOCKET s,int backlog);
这个函数可以把套接字转成监听模式。
如果客户端有了连接请求,我们还必须使用
int accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen);
来接受客户端的请求。
现在基本上已经完成了一个服务器的建立,而客户端的建立的流程则是初始化WinSock,然后创建Socket套接字,再使用
int connect(SOCKET s,const struct sockaddr FAR* name,int namelen) ;
来连接服务端。
计算机网络(第6版)295页图6-32所示的系统调用使用顺序:
3.VC中socket编程步骤
服务器端编
您可能关注的文档
- 湖北省黄冈市2010年初中毕业升学考试语文试卷.doc
- 湖北省黄冈市2013年秋季八年级期末考试.doc
- 湖北省黄冈市初中毕业生学业水平考试思想品德试卷.doc
- 湖北省黄冈市浠水县兰溪中学英才学校2013届九年级生物上学期期中试题.doc
- 湖北省黄梅县事业单位考试.doc
- 湖北省黄石市2012届九年级5月联考语文试题.doc
- 湖北荆州2014语文-2014初中毕业学业考试试卷.doc
- 湖北鄂州理综--2014初中毕业学业考试试卷.doc
- 湖北高考卷诗歌赏析部分2007-2011年.doc
- 湖北黄石2013年中考语文试题及答案.doc
- 2024-2030年中国氦气压缩机行业运行态势剖析及投资价值评估报告.docx
- 2024-2030年中国氧化钇纳米颗粒行业应用动态及未来需求预测研究报告.docx
- 2024-2030年中国氧化亚铜(CAS 1317-39-1)行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国氧化制硫酸催化剂行业调研分析及发展趋势预测研究报告.docx
- 2024-2030年中国氧化钇纳米材料行业未来趋势及产销需求预测报告.docx
- 2024-2030年中国氢燃料储存系统行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国氢氧化镁行业产销状况及应用前景预测研究报告.docx
- 2024-2030年中国氦气压缩机行业发展趋势及投资策略分析报告.docx
- 2010-2023历年江苏省苏州市常熟市九年级上学期期末考试政治试卷(带解析).docx
- 2024年中国语音报警仪市场调查研究报告.docx
最近下载
- acca历年真题汇总p4 jun.pdf
- ISO 56008-2024创新管理-创新运行测量的工具和方法-指南 (雷泽佳译-2024).docx VIP
- 第十一章电路及其应用章节复习(1课件)(课件)高二物理精讲练(人教版2019).pptx
- 环保型混凝土外加剂的可持续发展研究.pptx
- 声光火灾报警电路设计报告.doc
- 2024至2030年中国烯烃行业市场深度分析及投资前景分析报告.docx
- ISO 56007-2023创新管理 管理机会和想法的工具和方法 指南(雷泽佳译-2024).docx VIP
- 某检验科免疫组免疫室SOP文件.doc
- 地理人教版八年级上册从世界看中国-复习课教案.doc
- 风电机组的混合塔筒和风电机组.pdf VIP
文档评论(0)