- 2
- 0
- 约1.97万字
- 约 23页
- 2021-02-22 发布于湖北
- 举报
北京科技大学
软件课程设计报告
——C语言
班 级:
姓 名: 黄伟波
学 号:
指导教师:
日 期: 年 月 日
目 录
TOC \o 1-3 \h \z \u 1设计内容 1
2应用程序总体分析与设计 1
3应用程序各功能模块分析与设计 2
3.1功能模块 2
3.1.1服务器模块 2
3.1.2 客户端模块 2
3.2模块流程图 4
4程序测试 6
4.1测试过程 6
4.1.1 VS 2010截图 6
4.2测试结果 7
4.2.1服务器端截图 7
4.2.2客户器端截图 7
5程序文档 8
5.1使用说明 8
5.2程序说明 8
6 程序源代码 8
1设计内容
通过C语言程序编程实现一个局域网聊天程序,包括服务器端程序和客户端程序,程序能够实现两台主机或多台主机间的基本通信和文件传输。
2应用程序总体分析与设计
编译预处理命令
#include Winsock.h
#include stdio.h
#pragma comment (lib,wsock32.lib)
该应用程序中使用的基本Winsock函数有:
WSAStartup,socket,bind,listen,accept,connect,shutdown和closesocket等,使用数据传输函数有send和recv。
服务器程序的步骤如下:
初始化以及创建套接字,由WSAStartup()和socket()函数完成。
要将指定协议的套接字绑定到本地的IP地址和端口号。这个过程通过bind()函数来完成。
服务器处于监听状态,等待客户端连接,以便为它们的请求提供服务。服务进程必须在所绑定的名字上进行监听。因此需要把套接字置为监听模式。通过listen()函数来实现。
服务器程序调用函数accept准备接受来自客户端的连接。如果有一个客户端这时用connect()函数试图建立连接,服务器端就可以接受连接。
建立连接后,服务器端和客户端之间就可以使用send()和recv()函数进行通信。对输入和接收到的信息进行甄别,如果收到“SendFile”,则调用接收文件模块,进入接收文件状态;若在键盘输入“SendFile”,则调用发送文件模块,进入发送文件状态。否则,进程将按照普通信息进行收发对话。
(这里需要说明的是,默认情况下recv()函数处于阻塞模式,在接收数据前,程序将不向下执行。)
在控制台应用窗口中,程序只能依次执行语句,服务器和客户端在收到信息后,可进行回复(输入回复信息,并按回车键发送),或者不回复(按回车键以接收下一条信息)。
客户端程序的步骤如下:
输入服务器IP,存放在servIP[]。
初始化以及创建套接字,由WSAStartup和socket函数完成。
呼叫服务器,请求连接,构造int CallServer()函数,其中调用了connect()函数。
建立连接后,服务器端和客户端之间就可以使用send和recv函数进行通信。对输入和接收到的信息进行甄别,如果收到“SendFile”,则调用接收文件模块,进入接收文件状态;若在键盘输入“SendFile”,则调用发送文件模块,进入发送文件状态。否则,进程将按照普通信息进行收发对话。
3应用程序各功能模块分析与设计
3.1功能模块
3.1.1服务器模块
套接口建立模块
打开Winsock——WSAStartup
应用程序或DLL只能在一次成功的WSAStartup()调用后才能进一步调用其它的Windows Sockets API 函数。
创建套接口——socket()
服务器在使用套接口通信前,必须要拥有一个套接口。使用socket()函数创建套接口sock. 三个参数分别为:AF_INET, SOCK_STREAM, 0。
指定本地地址——bind()
Bind() 函数通过给套接口sock 分配一个本地名字来为套接口建立本地捆绑,即把一个套即可与一个主机地址和端口号联系起来。
接收文件模块
定义结构体——struct Filedata DataPacket(),
用于存放文件的文件名、数据和文件大小。
构造写文件函数——DWORD Writefile(char *fname,char *fdata,int flen)
将收到的数据写入文件。fname:文件名字指针, fdata:文件数据指针,
flen:文件大小。
发送文件模块
读
您可能关注的文档
最近下载
- 金属学与热处理(哈工大)第三版大纲.pdf VIP
- 2024改良型新药现状与趋势概览报告.pdf VIP
- 沙利文:改良型新药行业现状与发展趋势报告.pdf
- 状态-特质焦虑量表(STAI).docx VIP
- 2026年湘西民族职业技术学院单招职业技能考试题库含答案详解(考试直接用).docx VIP
- 上海市黄浦区2022届高三一模英语卷带答案.pdf VIP
- 2025年一建《建筑工程管理与实务》案例300问.pdf VIP
- 东南大学研究生课程考试成绩单试卷封面.docx VIP
- 2026年医护护士脑出血急救PPT.pptx VIP
- 【高三英语一模】2022届上海青浦区高三英语一模含答案 .pdf VIP
原创力文档

文档评论(0)