没有合适的资源?快使用搜索试试~ 我知道了~
计算机网络课程设计报告(网络聊天程序、IP多播网络会议程序)
4星 · 超过85%的资源 需积分: 14 90 下载量 81 浏览量
2009-11-28
16:12:47
上传
评论 4
收藏 114KB DOC 举报
温馨提示
计算机网络课程设计报告(网络聊天程序、IP多播网络会议程序)Socket通信
资源推荐
资源详情
资源评论
计算机网络
课程设计报告
题目:网络聊天程序、 IP
多播网络会议程
序
姓 名:
学 号:
班 级:
指导老师:
实验一:网络聊天程序
一、实验内容: 了解 Socket 通信的
基本原理,在此基础上编写一个简易的网络聊天程序。
二、实验目的: 1、加深对计算机网络
通信系统的工作原理的理解,通过编写计算机程序实现、模拟网络
聊天功能,使学生理解并掌握其基本原理及工作过程。
2、提高网络编程和应用的能力。提高实际编程能力和灵活运用
所学知识解决问题的能力。
三、实验要求: 编写一个简易的网络聊
天程序,理解 socket 的基本概念和工作原理,掌握 socket 的建立,
监听,连接,发送数据和接受数据,用同步套接字编写程序。程序
在服务端实现监听和连接请求,在客户端实现发送连接请求的功能,
在建立连接后进行发送和接受数据的功能。
四、实验平台: 本程序的设计平台是 W
indows XP,运用 Visual C++ 6.0 软件平台编写程序。
五、实验原理: 聊天程序是以服务器提
供服务端连接响应,使用者通过客户端连接到服务器,就可以与服
务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要
在 TCP/IP 环境下,实现服务器端和客户端两部分程序。
1. 服务器端建立一个 socket 设置好本机 IP 和监听的端口与 socket
进行绑定,开始监听连接请求,当接受到连接请求后,发出确认,
同客户端建立连接。开始与客户端进行通信。
2. 客户端建立一个 socket 设置好服务器的 IP 和提供服务的端口,
发出连接请求,在接受到服务端的确认信息后建立连接,开始与服
务端进行通信。
六、实验过程: 对于任何基于 Wins
ock 的编程首先我们必须要初始化 Winsock DLL 库.
int WSAStarup( WORD wVersionRequested , LPWSADATA lpWsAData
)。 调用这个接口函数可以帮我们
初始化 Winsock .然后我们必须创建一个套接字(socket).
SOCKET socket( int af , int,type , int protocol );
套接字可以说是 Winsock 通讯的核心.Winsock 通讯的所有数据传
输, 都是通过套接字来完成的,套接字包含了两个信息,一个是 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
) ; 来连接服务端.当服务器端和客户端建立连接以后,无论是客户端,
还是服务器端都可以使用
int send( SOCKET s , const char FAR* buf , int len , int flags );
int recv( SOCKET s , char FAR* buf , int len , int flags );
函数来接收和发送数据,因为,TCP 连接是双向的.
当要关闭通讯连结的时候,任何一方都可以调用
int shutdown( SOCKET s , int how ) ;
来关闭套接字的指定功能。再调用
int closesocket( SOCKET s) ;
来关闭套接字句柄。这样一个通讯过程就算完成了。
七、实验代码:
服务器端:
1、加载套接字库,创建套接字(WSAStartup()/socket);
2、绑定套接字到一个IP地址和一个端口上(bind());
3、将套接字设置为监听模式等待连接请求(listen());
4、请求到来后,接受连接请求,返回一个新的对应于此次连接的套
接字(accept());
5、用返回的套接字和客户端进行通信(send()/recv());
剩余19页未读,继续阅读
liqiang1226
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页