局域网文件传输和聊天系统

上传人:橙** 文档编号:333364044 上传时间:2022-09-01 格式:PDF 页数:24 大小:761.28KB
返回 下载 相关 举报
局域网文件传输和聊天系统_第1页
第1页 / 共24页
局域网文件传输和聊天系统_第2页
第2页 / 共24页
局域网文件传输和聊天系统_第3页
第3页 / 共24页
局域网文件传输和聊天系统_第4页
第4页 / 共24页
局域网文件传输和聊天系统_第5页
第5页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《局域网文件传输和聊天系统》由会员分享,可在线阅读,更多相关《局域网文件传输和聊天系统(24页珍藏版)》请在金锄头文库上搜索。

1、计 算 机 网 络课程设计题目名称:局域网文件传输和聊天系统学生学院:专业班级:学号:学生姓名:指导教师:2012 年6 月 21 日名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 24 页 -1 局域网文件传输和聊天系统摘要:本课程设计包含了文件传输协议的简单设计与实现和两人聊天系统的设计与实现。学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP 网络应用程序基本的设计方法和实现技巧,加深对客户/服务器的工作模式的认识。初步练习基于 TCP/IP 网络编程的基本实现方法和思路,同时进一步熟悉计算机网络课程中基于IP 层协议的工作机制。本设计完全用 C语言编写,其中包

2、括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,核心程序,个人体会及建议等。关键词:IP 层协议,TCP/IP 网络编程1 具体设计任务计算机网络实验环境建立在TCP/IP 网络体系结构之上。各计算机除了安装 TCP/IP 软件外,还安装了TCP/IP 开发系统。实验室各计算机安装了 VC+6.0,可对 C语言进行编译,可为用户提供全网范围的进程通信功能。本实验要求利用这些功能,设计和实现一个简单的文件传送协议和两人聊天系统。2 基本思路及所涉及的相关理论2.1 基本思路设计程序使客户端连接的时候,服务器将会向客户端发回一条消息告知它的 IP 地址

3、,然后关闭连接并继续接收端口的连接。建立各个命令功能对应的函数,发送请求,等待服务器端的服务。服务器端确认 IP 地址,获取主机信息,并对客户端进行会话,发送回复讯息给客户端,响应完毕后关闭连接,释放。2.2 相关理论文件传送是各种计算机网络都实现的基本功能,文件传送协议是名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 24 页 -2 一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是 INTERNET 使用最广泛的协议之一。计算机网络实验环境建立在TCP/IP 网络体系结构之上。各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。实验室

4、各计算机具备 Windows 环境中套接字 socket 的编程接口功能,可为用户提供全网范围的进程通信功能。本设计利用这些功能,设计和实现一个简单的文件传送协议和两人聊天系统。用C 语言可以简单的实现。3 设计流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 24 页 -3 4 部分截图名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 24 页 -4 5 核心程序#include#include#include#include#include#include#pragma comment(lib,Ws2_32)#define M 512000/每块传送文件的大小

5、500k#define portNum 8888/使用的端口号void LongToChar(long x,char a);/将 long 型整数转换成字符串名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 24 页 -5 long StrToLong(char str);/将字符串转换成long 型整数void getW_name(char waddr,char wname);/获取文件名函数void sendFile(SOCKET ss);/服务端发送文件函数int receiveFile(SOCKET sc);/客户端接收文件函数void chatting_client(SO

6、CKET sc);/客户端聊天函数void chatting_server(SOCKET s_d);/服务端聊天函数int client();/客户端主程序void server();/服务端主程序void main()system(cls);system(color 0a);puts(n);puts(*);puts(*);puts(*欢 迎 使 用 局 域 网 文 件 发 送 工 具*);puts(*);puts(*);puts(*);puts(*1.客户端*);puts(*);puts(*2.服务端*);puts(*);puts(*3.结束*);puts(*);puts(*);puts(*

7、蓝天雄鹰制作*);puts(*2012-6-20*);puts(*蓝鹰展翅气吞天下*);puts(*n);puts(全屏(退出全屏)操作请按:ALT+ENTERn);printf(请输入你要选择的端代号(1-3):);名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 24 页 -6 char ch;char Num10;gets(Num);ch=Num0;while(ch=4|ch=0)/检测用户选择的代码是否符合要求 printf(n 你的输入有误!请重新输入:);gets(Num);ch=Num0;if(1=ch)client();else if(2=ch)server();e

8、lse if(3=ch)exit(0);int client()system(color 0a);/修改 DOS 窗口颜色,是其成0A。WORD wVersion=MAKEWORD(1,1);WSADATA wsData;int nResult=WSAStartup(wVersion,&wsData);/启动 WINSOCKET if(nResult!=0)printf(启动 Winsock 失败!n);SOCKET sc=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);/创建套接字if(sc=INV ALID_SOCKET)名师资料总结-精品资料欢迎下载-名师精

9、心整理-第 7 页,共 24 页 -7 printf(创建套接字失败!n);SOCKADDR_IN addrSc;addrSc.sin_family=AF_INET;addrSc.sin_port=htons(portNum);/保证字节顺序char IP20;again:printf(请输入服务器的IP 地址:);gets(IP);if(-1=inet_addr(IP)/循环检测 IP 地址是否合法 printf(IP 地址错误!n);goto again;addrSc.sin_addr.S_un.S_addr=inet_addr(IP);int b=0;while(b5)/检测 5 次,如

10、果服务器在此时间内启动,则进行连接 nResult=connect(sc,(SOCKADDR*)&addrSc,sizeof(SOCKADDR);/套接字连接Sleep(DWORD)100);/延时 1 秒if(nResult=SOCKET_ERROR)printf(%d 次连接失败!n,b+1);else break;b+;if(nResult=SOCKET_ERROR)printf(登陆超时,请重新登陆!n);goto again;char*buf=连接成功!;/向服务端验证连接成功nResult=send(sc,buf,strlen(buf)+1,0);if(nResult=SOCKET

11、_ERROR)printf(5.套接字发送数据失败!n);名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 24 页 -8 return 0;char messM;nResult=recv(sc,mess,strlen(mess),0);/接受服务端的连接验证信息if(nResult=-1)/判断服务端是否关闭 printf(n 服务端已断开 n);system(pause);exit(0);printf(%sn,mess);/功 能 菜 单 及 操 作/tianle:system(cls);/清屏puts(nn);puts(*);puts(*);puts(*欢 迎 使 用 局 域

12、 网 文 件 发 送 工 具*);puts(*(客户端)*);puts(*);puts(*);puts(*请等待服务端的相应操作*);puts(*);puts(*);puts(*蓝天雄鹰制作*);puts(*2012-6-20*);puts(*蓝鹰展翅气吞天下*);puts(*n);puts(全屏(退出全屏)操作请按:ALT+ENTERn);char rMess100;nResult=recv(sc,rMess,strlen(rMess),0);/接收服务端发来的操作请求if(nResult=-1)/判断服务端是否关闭 printf(n 服务端已断开 n);system(pause);名师资料

13、总结-精品资料欢迎下载-名师精心整理-第 9 页,共 24 页 -9 goto tianle;printf(%sn,rMess);char ch;char str100;gets(str);ch=str0;while(ch!=Y&ch!=y&ch!=N&ch!=n)/处理客户端的错误输入 printf(输入有误,请重新输入(Y/N):);gets(str);ch=str0;send(sc,&ch,sizeof(char),0);/向服务端反馈选择,并执行相应操作if(strcmp(rMess,服务端向你传送文件,是否接受(Y/N):)=0&(ch=Y|ch=y)receiveFile(sc);

14、if(strcmp(rMess,服务端向你发起聊天,是否接受(Y/N):)=0&(ch=Y|ch=y)chatting_client(sc);if(ch=N|ch=n)printf(你拒绝了!n);system(pause);system(cls);goto tianle;nResult=closesocket(sc);/关闭套接字if(nResult=SOCKET_ERROR)printf(8.关闭套接字失败!n);return 0;void server()名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 24 页 -10 system(color 0a);/修改 DOS 窗

15、口颜色为 0A WORD wVersion=MAKEWORD(1,1);WSADATA wsData;int nResult=WSAStartup(wVersion,&wsData);/1、启动 Winsock if(nResult!=0)printf(启动 Winsock 失败!n);SOCKET s=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);/2.创建套接字if(s=INV ALID_SOCKET)printf(创建套接字失败!n);SOCKADDR_IN addr;addr.sin_family=AF_INET;addr.sin_port=htons(

16、portNum);/保证字节顺序addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);nResult=bind(s,(sockaddr*)&addr,sizeof(sockaddr);/3、套接字的绑定if(nResult=SOCKET_ERROR)printf(套接字的绑定失败!n);nResult=listen(s,5);/最多 5 个连接,套接字的监听if(nResult=SOCKET_ERROR)printf(套接字的监听(服务器端)失败!n);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);printf(n 等待客户端的连接);int a=0;while(a5)/开始的一个小动态图形 for(int b=0;b=4|ch tm_hour,local-tm_min,local-tm_sec,RMess);printf(n 请输入信息:);/客户端用户输入消息gets(SMess);if(strcmp(SMess,exit)=0)send(sc,SMess,strlen(SMess)+1,0);pr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号