




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
江南大学物联网工程学院实验报告 课程名称 TCP IP 网络编程设计 实验名称 服务器与客户端间通信 实验日期 班级 计科 姓名 学号 实验报告要求 1 实验名称 2 实验要求 3 实验环境 4 实验步骤 写明实验结果 5 实验体会 服务器主程序 SERVER 服务器端 include include pragma comment lib ws2 32 lib include include define DEFAULT PORT 5050 define BUFFER LENGTH 1024 struct recv info char info from 20 char info content 512 struct file name 用于存储文件中读取的用户名 char name 20 struct ipp 用于存储当前登录的用户的用户名和 ip char name 20 char ip 20 struct zhuce char str 10 char name 20 struct loginuser char str 10 char name 20 void main struct recv info info2 struct ipp ipaddress 30 struct zhuce zhuce1 struct file name filename 30 struct loginuser login user int i 0 控制存入 ip 的个数 int iPort DEFAULT PORT WSADATA wsaData SOCKET sSocket char string int length 4 文件头指针位移向量 FILE fp 文件头指针 unsigned int name num int m 0 用于记录当前登录的用户人数 int c int iLen int iRecv int iSend char str 5 char recv buf BUFFER LENGTH struct sockaddr in server client secser memset info2 info from 0 sizeof info2 info from memset info2 info content 0 sizeof info2 info content memset zhuce1 str 0 sizeof zhuce1 str memset zhuce1 name 0 sizeof zhuce1 name memset filename 0 sizeof filename memset memset ipaddress 0 sizeof ipaddress memset printf Server is waiting n 从文件中读取该服务器上注册的用户名 fp fopen file1 txt rt fscanf fp d fseek fp length 0 将文件输出头指针向下移动四个字节 即用户名存储位置的首地址 for i 0 i name num i length 20 i 4 fseek fp length 0 fgets filename i name sizeof filename i name fp fclose fp printf s n filename i 2 name 经测试已将文件中的内容读取到 filename 中 if WSAStartup MAKEWORD 2 2 return sSocket socket AF INET SOCK DGRAM 0 if sSocket INVALID SOCKET printf socket failed d n WSAGetLastError return server sin family AF INET server sin port htons iPort server sin addr s addr htonl INADDR ANY if bind sSocket LPSOCKADDR d n WSAGetLastError return iLen sizeof client while 1 memset recv buf 0 sizeof recv buf iRecv recvfrom sSocket recv buf BUFFER LENGTH 0 SOCKADDR 注册用户 if strcmp recv buf yes 0 fp fopen file1 txt rt memcpy for c 0 c name num c if strcmp filename c name zhuce1 name 0 break if c name num strcpy filename name num name zhuce1 name 将用户名存入文件中 length 20 name num 4 fseek fp length 0 fwrite filename name num name sizeof filename name num name 1 fp name num fseek fp 0 0 fprintf fp d name num fclose fp printf s 已注册成功 n filename name num 1 name memset recv buf 0 sizeof recv buf continue else if strcmp recv buf no 0 memset recv buf 0 sizeof recv buf continue if strcmp recv buf login 0 memcpy for c 0 c name num c if strcmp filename c name login user name 0 strcpy ipaddress m name login user name strcpy ipaddress m ip inet ntoa client sin addr m printf s 已登录 n login user name 未注册的用户也能收发数据 break if c name num continue memset if iRecv SOCKET ERROR printf recvfrom falied n WSAGetLastError return else if iRecv 0 break else memcpy 判断收到的信息中是不是登录的用户发来的 for int c 0 c name num c if strcmp ipaddress c name info2 info from 0 printf s s n info2 info from info2 info content 发送消息 for int j 0 j m j secser sin family AF INET secser sin port htons iPort secser sin addr s addr inet addr ipaddress j ip iSend sendto sSocket recv buf sizeof recv buf 0 SOCKADDR if iSend SOCKET ERROR printf sendto falied n break else if iSend 0 break closesocket sSocket WSACleanup 客户端主程序代码 CLIENT 客户端 include include include pragma comment lib ws2 32 lib define DEFAULT PORT 5050 define DATA BUFFER 1024 struct send info char info from 20 char info content 256 struct login info char str 10 用于判断客户端请求的内容是登录还是注册 char from name 20 void main struct send info info2 struct login info login info1 memset info2 info from 0 sizeof info2 info from memset info2 info content 0 sizeof info2 info content memset login info1 from name 0 sizeof login info1 from name memset login info1 str 0 sizeof login info1 str WSADATA wsaData SOCKET sClient int iPort 5050 int iLen int iSend int iSendip char str 10 用于登录用户时 用户输入的字符串 char ip 40 char send buf DATA BUFFER struct sockaddr in server printf Client is running n n printf 输入服务器 IP scanf s if WSAStartup MAKEWORD 2 2 return server sin family AF INET server sin port htons iPort server sin addr s addr inet addr ip sClient socket AF INET SOCK DGRAM 0 if sClient INVALID SOCKET printf socket falied return iLen sizeof server while 1 memset printf 是否注册 yes no n scanf s if strcmp str yes 0 printf 输入用户名 scanf s strcpy login info1 str str strcpy login info1 from name info2 info from 测试用 向服务器发送注册信息 memset send buf 0 sizeof send buf memcpy send buf iSendip sendto sClient send buf sizeof send buf 0 struct sockaddr memset send buf 0 sizeof send buf if iSendip SOCKET ERROR printf sendto failed d n WSAGetLastError return else if iSendip 0 return 向服务器发送登录信息 memset str 0 sizeof str memset memset printf 是否登录 yes no n scanf s if strcmp str yes 0 printf 输入用户名 scanf s strcpy login info1 from name info2 info from strcpy login info1 str login memset send buf 0 sizeof send buf 发送登录信息 memcpy send buf iSendip sendto sClient send buf sizeof send buf 0 struct sockaddr memset send buf 0 sizeof send buf if iSendip SOCKET ERROR printf sendto failed d n WSAGetLastError return else if iSendip 0 return break while 1 memset send buf 0 sizeof send buf printf 输入 n scanf s memcpy send buf iSend sendto sClient send buf sizeof send buf 0 struct sockaddr if iSend SOCKET ERROR printf sendto failed d n WSAGetLastError return else if iSend 0 return closesocket sClient WSACleanup 客户端显示程序 客户端显示器 include include pragma comment lib ws2 32 lib include define DEFAULT PORT 5050 define BUFFER LENGTH 1024 struct recv info char info from 20 char info content 512 void main printf Printscreen is running n n struct recv info info3 memset info3 info from 0 sizeof info3 info from memset info3 info content 0 sizeof info3 info content int iPort DEFAULT PORT WSADATA wsaData SOCKET sSocket int iLen int iRecv int iSend char recv buf BUFFER LENGTH struct sockaddr in server client sec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医务人员职业暴露与安全防护培训试题及答案
- 学校食品安全投诉处理制度
- 2024年度陕西省“安全生产月”知识考试试题附参考答案
- 养老护理培训试题及答案
- 健康管理师考试真题及详解
- 污水处理改造项目的成本控制方案
- 动物医学专业毕业论文范文
- 动画专业毕业论文
- 五年级语文下册第一单元表格式教案
- 铝灰渣综合利用可行性研究
- GB/T 20671.1-2006非金属垫片材料分类体系及试验方法第1部分:非金属垫片材料分类体系
- GB/T 17449-1998包装玻璃容器螺纹瓶口尺寸
- 熵权法教学讲解课件
- PMC知识培训课件
- 医师病理知识定期考核试题与答案
- 高中数学教材分析讲座课件第五章-三角函数
- 会计师事务所验资工作底稿模板
- 婚育情况登记表
- 安宁疗护服务流程
- 久日新材料(东营)有限公司 年产87000吨光固化系列材料建设项目环评公示版
- 热分析DSC培训new
评论
0/150
提交评论