




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概述概述 AbstractAbstract LinuxLinux 作为免费开源操作系统广泛应用于企业 作为免费开源操作系统广泛应用于企业 LinuxLinux 与与 UNIXUNIX 有有 着深厚的渊源 而着深厚的渊源 而 UNIXUNIX 系统可谓系统可谓 坚如磐石坚如磐石 其稳定性受到广泛赞 其稳定性受到广泛赞 誉 近年来 越来越多的就业岗位被提供给了誉 近年来 越来越多的就业岗位被提供给了 LinuxLinux 开发人员 开发人员 IMIM 即时通讯软件是近年来流行的通信方式 企业 个人等都在更即时通讯软件是近年来流行的通信方式 企业 个人等都在更 多地使用多地使用 IMIM 进行沟通 通过计算机网络 信息的传递变得十分方便 进行沟通 通过计算机网络 信息的传递变得十分方便 并非所有并非所有 IMIM 软件都要想腾讯软件都要想腾讯 QQQQ 那样复杂 庞大 作为内部沟通 只那样复杂 庞大 作为内部沟通 只 需功能齐全 操作方便即可 需功能齐全 操作方便即可 作为课程设计作品 在作为课程设计作品 在 LinuxLinux 下开发下开发 C SC S 式式 IMIM 软件 对于熟悉软件 对于熟悉 LinuxLinux 复习计算机网络 进一步学习软件开发都有十分积极的意义 复习计算机网络 进一步学习软件开发都有十分积极的意义 AsAs isis openopen sourcesource software software LinuxLinux hashas beenbeen widelywidely usedused inin corporations corporations TheseThese years years moremore andand moremore jobsjobs areare offeredoffered toto LinuxLinux developers developers forfor LinuxLinux spokenspoken highlyhighly ofof forfor itsits stabilitystability asas UNIX UNIX IMIM softwaresoftware hashas becomebecome thethe mostmost widelywidely usedused communicationcommunication softwaresoftware bothboth forfor businessbusiness useuse andand forfor personalpersonal use use ThroughThrough internetworksinternetworks includingincluding thethe Internet Internet EnterpriseEnterprise LAN LAN VPNsVPNs informationinformation cancan bebe exchangedexchanged moremore convenientlyconveniently andand immediately immediately However However notnot allall IMIM ofof C SC S modelmodel isis thatthat complexcomplex asas TencentTencent QQ QQ IMIM softwaresoftware insideinside anan EnterpriseEnterprise LANLAN shouldshould bebe lighterlighter andand easier easier AsAs a a productproduct designdesign ofof Linux Linux developingdeveloping anan IMIM softwaresoftware isis helpfulhelpful toto reviewingreviewing keykey pointspoints ofof Linux Linux Internet Internet andand softwaresoftware developing developing 目目 录录 第第 1 1 章章 设计任务设计任务 1 1 1 1 设计任务概述设计任务概述 1 1 1 1 1 1 课题名称课题名称 LinuxLinux 下的下的 IMIM 网络聊天软件网络聊天软件 1 1 2 1 1 2 内容摘要内容摘要 随着嵌入式在生活中的应用越来越广泛 嵌入式随着嵌入式在生活中的应用越来越广泛 嵌入式 LINUXLINUX 下的下的 SocketSocket 网络编程也越来越热 为了加强对在网络编程也越来越热 为了加强对在 LinuxLinux 系统下进行编程的学习和实系统下进行编程的学习和实 践 运用计算机网络 软件工程等知识 我们选择了践 运用计算机网络 软件工程等知识 我们选择了 LinuxLinux 下网络聊天下网络聊天 工具作为课设题目 工具作为课设题目 本系统主要功能在于实现多个客户端一与服务器端之问的信息传递本系统主要功能在于实现多个客户端一与服务器端之问的信息传递 与文件传输功能 系统主要实现与文件传输功能 系统主要实现 4 4 人聊天室功能 注册与登录系统 公人聊天室功能 注册与登录系统 公 聊 私聊 文件传输 应用聊 私聊 文件传输 应用 LINUXLINUX 下的下的 SocketSocket 网络编程并使用网络编程并使用 TCPTCP 实现实现 简 单聊天程序 编程过程中不断用各种网络调试工具进行调试程序 简 单聊天程序 编程过程中不断用各种网络调试工具进行调试程序 最终做成了简单的在最终做成了简单的在 LinuxLinux 下的聊天工具 下的聊天工具 关键词 关键词 LinuxLinux SocketSocket IMIM 软件软件 1 2 1 2 开发环境开发环境 1 2 1 1 2 1 硬件环境硬件环境 IntelIntel x86x86 CPUCPU 架构架构 主频主频 1G1G HzHz 以上以上 512MB512MB DDR2DDR2 内存内存 支持支持 800 600800 600 以上分辨率 以上分辨率 1616 色以上的显示设备色以上的显示设备 1 2 2 1 2 2 软件环境软件环境 RedRed HatHat EnterpriseEnterprise LinuxLinux 或 或 FedoraFedora VIMVIM 编译器编译器 1 3 1 3 要求要求 在在 LinuxLinux 下实现网络聊天 包括公聊 一对多私聊等功能 实现客下实现网络聊天 包括公聊 一对多私聊等功能 实现客 户端之间经网络传输文件 能保存聊天记录 户端之间经网络传输文件 能保存聊天记录 第第 2 2 章章 设计方案设计方案 2 1 2 1 系统结构系统结构 2 1 1 2 1 1 结构结构 结构组成 注册 登录 聊天 文件传输 结构组成 注册 登录 聊天 文件传输 2 1 2 2 1 2 结构图结构图 聊天系统分为五大模块聊天系统分为五大模块 2 2 2 2 流程与模块流程与模块 2 2 1 2 2 1 执行流程执行流程 2 2 2 2 2 2 各功能需要调用的模块各功能需要调用的模块 模块模块 需求需求 注册注册登录登录聊天聊天文件传输文件传输 用户注册用户注册 用户登录用户登录 系统广播系统广播 上下线提上下线提 示示 用户私聊用户私聊 文件传输文件传输 强制下线强制下线 第第 3 3 章章 实现原理实现原理 3 1 3 1 注册 登录模块注册 登录模块 3 1 1 3 1 1 服务器端服务器端 服务器端建立好服务器端建立好 socketsocket 等待连接 当有客户端连接服务器的时候 等待连接 当有客户端连接服务器的时候 服务器接收连接 并接受客户端发送过来的消息 恨据接收到的结构体服务器接收连接 并接受客户端发送过来的消息 恨据接收到的结构体 所携带的协议来做相应的功能 服务器端启动后如所携带的协议来做相应的功能 服务器端启动后如图图 3131 所示 所示 图图 3 31 1 l l 注册 如果协议为 注册 如果协议为 regreg 则为客户端注册 首先将发送过来的结 则为客户端注册 首先将发送过来的结 构体 提取用户名和密码 然后需要对川户名合法性检验 验证之后如构体 提取用户名和密码 然后需要对川户名合法性检验 验证之后如 果用户名合法则将川户信 已保存到文件中 合法性的规则包括川户名果用户名合法则将川户信 已保存到文件中 合法性的规则包括川户名 不能重复和不能使用不能重复和不能使用 allall 等协议作为川户名 并且川户名和密码都不能等协议作为川户名 并且川户名和密码都不能 为空 如果注册成功 服务器端发送一个消息给注册的客户端 同样将为空 如果注册成功 服务器端发送一个消息给注册的客户端 同样将 消息保存在一个结构休里 如果失败 也给客户端发送一个消息如消息保存在一个结构休里 如果失败 也给客户端发送一个消息如 您您 榆入的用户名小能为榆入的用户名小能为 akk akk 或者或者 用户名用户名 XXXX 已经存在已经存在 注册结果如 注册结果如图图 3232 所示 所示 图图 3 32 2 2 2 登录 如果协议为 登录 如果协议为 loginlogin 则将用户名和密码信息提取 再遍历 则将用户名和密码信息提取 再遍历 存放用户信息文件里的用户名和密码 直到验证成功为止 如果验证成存放用户信息文件里的用户名和密码 直到验证成功为止 如果验证成 功则对所有在线的川户发送一条消息 功则对所有在线的川户发送一条消息 提示提示 XXXX 用户登录成功用户登录成功 如果 如果 失败则只给登阳 失败的客户端提示登录失败 并给出原囚 如失败则只给登阳 失败的客户端提示登录失败 并给出原囚 如 用户用户 名不存在名不存在 或者或者 用户名或者密码输入错误用户名或者密码输入错误 并跳转到相应的代码执行 并跳转到相应的代码执行 其他功能 成功则等特发送客户端消息 失败则关闭其他功能 成功则等特发送客户端消息 失败则关闭 SocketSocket 并结束线程 并结束线程 如如图图 3333 所示 所示 图图 3 33 3 3 3 监听和踢出客户端 通过六行和修改绑定的 监听和踢出客户端 通过六行和修改绑定的 SocketSocket 和在线用户和在线用户 队列实现查看和踢出在线用户 踢出用户后向被踢出用户发送相关信息 队列实现查看和踢出在线用户 踢出用户后向被踢出用户发送相关信息 如如图图 3434 图图 3535 所示 所示 图图 3 34 4 图图 3 35 5 3 1 2 3 1 2 客户端客户端 客户端的输入和消息的显示要使用客户端的输入和消息的显示要使用 2 2 个终端 一个是个终端 一个是 ClientClient 一个 一个 是是 DisplayDisplay ClientClient 终端为输入的界面 在这个界面里 新建一个线程终端为输入的界面 在这个界面里 新建一个线程 来接受服务器端发来的消息 再添加时间信息 并将这些信息写入文件 来接受服务器端发来的消息 再添加时间信息 并将这些信息写入文件 然后给然后给 DisplayDisplay 进程发送一个消息 进程发送一个消息 DisplayDisplay 进程接到消息 就去读取进程接到消息 就去读取 文件 并将这些数拟显示在文件 并将这些数拟显示在 DisplayDisplay 终端 终端 打开客户端打开客户端 DisplayDisplay 终端界而 用终端界而 用 lseeklseek 将内部指将内部指 t t 阵行向文件末阵行向文件末 尾 等待尾 等待 ClientClient 终端里的线秤将消息写入文件 一旦有消息过来 就去终端里的线秤将消息写入文件 一旦有消息过来 就去 文件里读取数据井打印在文件里读取数据井打印在 DisplayDisplay 终端 终端 打开客户端打开客户端 ClientClient 终端界而 有终端界而 有 3 3 个菜单 包括注册 登录 退出 个菜单 包括注册 登录 退出 选择相应项即可进幻相关操作 注册和登录如选择相应项即可进幻相关操作 注册和登录如图图 3232 图图 3333 所示 所示 3 1 3 3 1 3 协议协议 服务器端和客户端之间互相通信需要使用的协议 服务器端和客户端之间互相通信需要使用的协议 l l all msgall msg 为给所有人发送消息 为给所有人发送消息 2 2 直接输入 直接输入 view view 获得在线用户列表 获得在线用户列表 3 3 user msguser msg 给用户名为给用户名为 useruser 的用户发送私聊消息 的用户发送私聊消息 4 4 trans user filenamtrans user filenam 将文件传输给将文件传输给 whowho 5 5 regreg 为注册 为注册 6 6 loginlogin 为登录 为登录 3 2 3 2 聊天模块聊天模块 3 2 1 3 2 1 客户端客户端 客户端在登陆成功之后 在发送消 息之前可以先查看在线用户列客户端在登陆成功之后 在发送消 息之前可以先查看在线用户列 表 查看用户列表使用表 查看用户列表使用 view view 如所示 如所示 图图 3 36 6 接着 可以使用接着 可以使用 user msguser msg 的形式发送信息 这个消息是发送给的形式发送信息 这个消息是发送给 useruser 的 或者 先使用的 或者 先使用 user user 来切换到发送消息 这个时候 你不需要来切换到发送消息 这个时候 你不需要 加上协议 即可给加上协议 即可给 useruser 这个用户发送消息 如这个用户发送消息 如图图 3737 图图 3838 所示 所示 图图 3 37 7 图图 3 38 8 当然 上述方法也可以实现一对多聊天 如所示 当然 上述方法也可以实现一对多聊天 如所示 图图 3 39 9 这些消息都加上协议这些消息都加上协议 user msguser msg 来封装成结构体 再发送给服务器端 来封装成结构体 再发送给服务器端 3 2 2 3 2 2 服务器端服务器端 如果是私聊 则根据客户端要发送到哪个用户 到链表里取得该用如果是私聊 则根据客户端要发送到哪个用户 到链表里取得该用 户名的客户端信息 服务器再发送给相应的接收信息的客户端 接收信户名的客户端信息 服务器再发送给相应的接收信息的客户端 接收信 息的客户终端就会光将信息保存到聊天记录的文件里 并显示收到的信息的客户终端就会光将信息保存到聊天记录的文件里 并显示收到的信 息 并且信息前面会显示相应的提示符 息 并且信息前面会显示相应的提示符 3 3 3 3 文件传输模块文件传输模块 3 3 1 3 3 1 客户端客户端 如果某个客户端想发送文件给其他客户端 则直接使用命令如果某个客户端想发送文件给其他客户端 则直接使用命令 trans user filenametrans user filename transtrans 为协议 为协议 useruser 为用户名 为用户名 filenamefilename 包括包括 本地的路径和文件名 如本地的路径和文件名 如图图 310310 图图 311311 所示 所示 图图 3 31010 图图 3 31111 3 3 2 3 3 2 服务器端服务器端 当发送到服务器的时候 根据协议 先给接收的客户端发送一条消当发送到服务器的时候 根据协议 先给接收的客户端发送一条消 息为息为 transtrans 标记 某某用户给您发送了标记 某某用户给您发送了 XXXX 文件 文件 Y Y 接收接收 N N 拒绝接收 如拒绝接收 如 果客户端按下果客户端按下 N N 则返回一条消息给服务器端 服务器端同时告诉发送 则返回一条消息给服务器端 服务器端同时告诉发送 的客户端对方拒绝接收文件 发送端可以继续做其他的事 如果接收的的客户端对方拒绝接收文件 发送端可以继续做其他的事 如果接收的 客户端按下客户端按下 Y Y 并立即按受保存的路径和文件名 输入完后就可以接收 并立即按受保存的路径和文件名 输入完后就可以接收 文件了 客户端返回一条消息给无误器端 服务器端同时返回一条消息文件了 客户端返回一条消息给无误器端 服务器端同时返回一条消息 给发送的客户端 告诉客户端对方同意接收文件 这时候文件开始传输 给发送的客户端 告诉客户端对方同意接收文件 这时候文件开始传输 发送完毕后 发送的客户端会显示传输完毕 传输的文件可以使任意的发送完毕后 发送的客户端会显示传输完毕 传输的文件可以使任意的 文们 不仅仅是文本 多媒体文件也可以 文们 不仅仅是文本 多媒体文件也可以 第第 4 4 章章 实现实现 本设计由本设计由 C C 语言实现 用语言实现 用 VIMVIM 编译 编译 check h check h include include include include include include include include include include include include include include include include include include include include define define MAXLENMAXLEN 10241024 structstruct messagemessage charchar flag 15 flag 15 charchar name 10 name 10 intint size size charchar msg MAXLEN msg MAXLEN intint reg check structreg check struct messagemessage recievemsg recievemsg intint login check structlogin check struct messagemessage recievemsg recievemsg check c check c include include check h check h intint reg check structreg check struct messagemessage recievemsg recievemsg intint fd fd intint read size write size read size write size structstruct messagemessage cmpmsg cmpmsg if strlen recievemsg if strlen recievemsg name 10 name 10 strlen recievemsg msg 20strlen recievemsg msg 20 returnreturn 1 1 if strcmp recievemsg if strcmp recievemsg name all 0 name all 0 returnreturn 1 1 if strcmp recievemsg if strcmp recievemsg name reg 0 name reg 0 returnreturn 1 1 if strcmp recievemsg if strcmp recievemsg name login 0 name login 0 returnreturn 1 1 if strcmp recievemsg if strcmp recievemsg name trans 0 name trans 0 returnreturn 1 1 if fd open user txt O RDWRif fd open user txt O RDWR O CREAT O A PPEND 0666 0 O CREAT O A PPEND 0666 0 perror open perror open printf open n printf open n returnreturn 2 2 dodo if read size read fd close fd returnreturn 1 1 while read size while read size sizeof structsizeof struct message message if write size write fd recieif write size write fd recie vemsg sizeof structvemsg sizeof struct message 0 message 0 perror write perror write close fd close fd returnreturn 2 2 while write size sizeof struwhile write size sizeof stru ctct message message write size write size 0 writesize 0 writesize lseek fd lseek fd write size SEEK CUR write size SEEK CUR write size write fd recievemswrite size write fd recievems g sizeof structg sizeof struct message message printf writeprintf write filefile success n success n close fd close fd returnreturn 0 0 intint login check structlogin check struct messagemessage recievemsg recievemsg intint fd fd structstruct messagemessage cmpmsg cmpmsg intint read size read size if fd open user txt O RDONif fd open user txt O RDON LY 0 LY 0 perror open perror open returnreturn 2 2 dodo if read size read fd close fd returnreturn 0 0 while read size 0 while read size 0 close fd close fd returnreturn 1 1 voidvoid main main structstruct messagemessage sendmsg sendmsg printf inputprintf input name n name n gets sendmsg name gets sendmsg name printf inputprintf input mima n mima n gets sendmsg msg gets sendmsg msg printf d n reg check msg printf d n login check ndmsg client c client c include include include include include include include include include include include include include include include include include include include include include include include include include include include include define define MAXLENMAXLEN 10241024 structstruct messagemessage charchar flag 15 flag 15 charchar name 10 name 10 intint size size charchar msg MAXLEN msg MAXLEN structstruct msqmsq longlong msg type msg type charchar msg text 5 msg text 5 intint qidqid 1 fd 1 fd 1 sockfd savefilefd 1 1 sockfd savefilefd 1 charchar filefromname 10 filefromname 10 voidvoid handleQuit inthandleQuit int signal no signal no if fdif fd 0 0 close fd close fd close sockfd close sockfd if qidif qid 0 0 if msgctl qid IPC RMID NULL if msgctl qid IPC RMID NULL 0 0 printf printf 消息队列无法关闭消息队列无法关闭 n n exit 1 exit 1 close savefilefd close savefilefd printf printf 程序正常退出程序正常退出 n n raise SIGQUIT raise SIGQUIT voidvoid cutStr charcutStr char str charstr char left left intint n n charchar right intright int m m charchar c c intint i k j i k j for ifor i 0 0 i i n n i i if str i if str i c c break break if iif i n n i i 1 1 elseelse memset left 0 strlen left memset left 0 strlen left for kfor k 0 0 k k i i k k left k left k str k str k for jfor j i 1i 1 j j m j m j if str j if str j 0 0 break break right j i 1 right j i 1 str j str j left i left i 0 0 if jif j 0 0 printf filedata msgprintf filedata msg s n filedata msg s n filedata msg send sockfd message 0 elseelse printf printf 读取文件失败读取文件失败 文件文件 传输中止传输中止 n n break break whilewhile filedata size filedata size 0 0 close savefilefd close savefilefd savefilefdsavefilefd 1 1 voidvoid handlerecvmsg inthandlerecvmsg int sockfd sockfd intint connfdconnfd sockfd sockfd intint nread nread charchar buf 1024 buf 1024 charchar str 1024 str 1024 structstruct messagemessage recvmsg recvmsg time ttime t timep timep structstruct msqmsq msg msg if if fdfd open chatlog txt O RDWR O Copen chatlog txt O RDWR O C REAT O APPEND REAT O APPEND 0 0 printf printf 打开聊天记录文件失打开聊天记录文件失 败败 exit 1 exit 1 printf d n fd printf d n fd if qidif qid msgget 2222 IPC CREAT 0666 msgget 2222 IPC CREAT 0666 1 1 printf printf 创建消息队列失败创建消息队列失败 n n exit 1 exit 1 msg msg typemsg msg type getpid getpid strcpy msg msg text OK strcpy msg msg text OK while 1 while 1 nreadnread recv connfd message 0 if nreadif nread 0 0 printf printf 与服务器断开了连接与服务器断开了连接 n n close fd close fd close connfd close connfd exit 0 exit 0 elseelse ifif strcmp recvmsg flag all strcmp recvmsg flag all 0 0 timetime sprintf str s ssprintf str s s 发给所有发给所有 人人 s n n ctime recvmsg name recvmsg msg elseelse ifif strcmp recvmsg flag sermsg strcmp recvmsg flag sermsg 0 0 timetime printf sprintf s 服务器发给所有服务器发给所有 人人 s n n ctime recvmsg msg continue continue elseelse ifif strcmp recvmsg flag view strcmp recvmsg flag view 0 0 timetime printf sprintf s 当前在线客户端当前在线客户端 n s n n ctime sg msg continue continue elseelse ifif strcmp recvmsg flag trans strcmp recvmsg flag trans 0 0 pthread tpthread t pid pid ifif strcmp recvmsg msg agree strcmp recvmsg msg agree 0 0 strcpy filefromname recvmsg nstrcpy filefromname recvmsg n ame ame 创建线程发送文件创建线程发送文件 pthread create handlesendfile NULL elseelse if strcmp recvmsg msg disagrif strcmp recvmsg msg disagr ee ee 0 0 printf printf 对方拒绝接收文件对方拒绝接收文件 n n close savefilefd close savefilefd savefilefdsavefilefd 1 1 elseelse if strcmp recvmsg msg noexisif strcmp recvmsg msg noexis t t 0 0 printf printf 该客户端不存在该客户端不存在 n n close savefilefd close savefilefd savefilefdsavefilefd 1 1 elseelse strcpy filefromname recvmsg nstrcpy filefromname recvmsg n ame ame printf sprintf s 向你请求传名为向你请求传名为 s s 文件文件 是否同意接受是否同意接受 agree agree 同意同意 disagree disagree 不同意不同意 n recvmsg name recvmsg msg n recvmsg name recvmsg msg savefilefdsavefilefd 0 0 continue continue elseelse if strcmp recvmsg flag transif strcmp recvmsg flag trans f f 0 0 intint n n if strcmp recvmsg msg end if strcmp recvmsg msg end 0 0 printf printf 文件传输结束文件传输结束 n n close savefilefd close savefilefd savefilefdsavefilefd 1 1 continue continue elseelse n write savefilefd recvmsg msn write savefilefd recvmsg ms g recvmsg size g recvmsg size printf recvmsg msgprintf recvmsg msg s n recvmsg msg s n recvmsg msg while nwhile n 0 0 lseek savefilefd n SEEK CUR lseek savefilefd n SEEK CUR n write savefilefd recvmsg msn write savefilefd recvmsg ms g recvmsg size g recvmsg size continue continue elseelse timetime sprintf str s ssprintf str s s 发来的私发来的私 聊消息聊消息 s n n ctime recvmsg name recvmsg msg write fd str strlen str write fd str strlen str msgsnd qid msq 0 intint main intmain int argc charargc char argv argv structstruct sockaddr insockaddr in server addr server addr intint port port intint do number do number structstruct messagemessage a a charchar str MAXLEN str MAXLEN charchar buf MAXLEN buf MAXLEN pthread tpthread t pid pid if argcif argc 3 3 printf printf 请输入服务器请输入服务器 IPIP 和端和端 口口 n n exit 1 exit 1 portport atoi argv 2 atoi argv 2 if sockfdif sockfd socket AF INET SOCK STREAM 0 socket AF INET SOCK STREAM 0 1 1 printf printf 创建创建 socketsocket 失败失败 n n exit 1 exit 1 signal SIGINT handleQuit signal SIGINT handleQuit printf printf n n printf printf n n printf printf inputinput a a numbernumber toto workwork n n printf t1 login t t tprintf t1 login t t t n n printf t2 register t tprintf t2 register t t n n printf t3 exit t t tprintf t3 exit t t t n n printf n printf n printf printf n n scanf d scanf d gets str gets str while do numberwhile do number 1 1 n scanf d scanf d gets str gets str if do number 3 if do number 3 close sockfd close sockfd printf printf 程序已退出程序已退出 n n exit 0 exit 0 bzero sockaddr in server addr sin familyserver addr sin family AF INET AF INET server addr sin addr s addrserver addr sin addr s addr inet addr argv 1 inet addr argv 1 server addr sin portserver addr sin port htons port htons port if connect sockfd structif connect sockfd struct sockaddrsockaddr n exit 2 exit 2 if do numberif do number 1 1 intint n n 3 3 while n while n printf printf 请输入你的用户名请输入你的用户名 n n scanf s a name scanf s a name printf printf 请输入密码请输入密码 n n scanf s a msg scanf s a msg strcpy a flag login strcpy a flag login a flag 3 a flag 3 0 0 send sockfd send sockfd printf printf 正在等待服务器应答正在等待服务器应答 n n recv sockfd buf MAXLEN 0 recv sockfd buf MAXLEN 0 printf printf 接到服务器发来的信接到服务器发来的信 息息 s n buf s n buf if strcmp buf if strcmp buf 登录成功登录成功 0 0 int int i j k i j k pthread create gets str gets str strcpy a flag all strcpy a flag all while 1 while 1 memset a msg 0 strlen a msg memset a msg 0 strlen a msg memset str 0 strlen str memset str 0 strlen str gets str gets str strcpy buf a flag strcpy buf a flag cutStr str a flag 15 a msg MAcutStr str a flag 15 a msg MA XLEN XLEN printf printf 标志信息为标志信息为 s n a flag s n a flag if strcmp a flag view if strcmp a flag view 0 0 send sockfd send sockfd strcpy a flag buf strcpy a flag buf continue continue elseelse ifif strcmp a flag trans strcmp a flag trans 0 0 ifif strcmp a msg agree strcmp a msg agree 0 0 savefilename 20 char char savefileallname 22 savefileallname 22 printf printf 请输入保存请输入保存 的文件名的文件名 文件将保存在当前目录文件将保存在当前目录 下下 n n dodo gets savefilename gets savefilename savefilefdsavefilefd open savefilename O RDWR O CRopen savefilename O RDWR O CR EAT O EXCL 0666 EAT O EXCL 0666 if savefilefdif savefilefd 1 1 printf printf 文件名可能存文件名可能存 在请重新命名在请重新命名 n n while savefilefd while savefilefd 1 1 if savefilefdif savefilefd 0 0 printf printf 创建文件失败 创建文件失败 n n savefilefdsavefilefd 1 1 elseelse strcpy a name filefromname strcpy a name filefromname send sockfd send sockfd printf agreeprintf agree s s s n a flag a name a s s s n a flag a name a msg msg elseelse memset a name 0 strlen a name memset a name 0 strlen a name memset str 0 strlen str memset str 0 strlen str cutStr a msg a name 10 str MAcutStr a msg a name 10 str MA XLEN XLEN ifif str 0 str 0 0 0 transfileallname 22 sprintf transfileallname sprintf transfileallname s str s str savefilefdsavefilefd open str O RDWR 0666 open str O RDWR 0666 if savefilefdif savefilefd 0 0 printf printf 打开文件失败 打开文件失败 n n savefilefdsavefilefd 1 1 elseelse memset a msg 0 strlen a msg memset a msg 0 strlen a msg strcp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CNSS 024-2024社区营养工作室建设技术规范
- T/CNSS 029-2024燕麦乳
- 2025黑龙江黑河市下半年事业单位招聘工作人员238人备考考试题库附答案解析
- 2025江西南昌市安义县工投商业管理有限公司第三批招聘2人备考考试题库附答案解析
- 2026咸阳彬县煤炭有限责任公司校园招聘(60人)备考考试题库附答案解析
- 工厂安全培训检查表课件
- 2025福建东南标准认证中心有限公司、福建东南质量技术培训中心有限公选聘2人备考考试题库附答案解析
- 2025四川省算云科技有限责任公司招聘2人备考考试题库附答案解析
- 2025年河北衡水市市直机关公开遴选公务员91人备考考试题库附答案解析
- 哲学:解码与创新
- 政府机关防恐防暴演练方案范文
- 钢铁销售基础知识培训
- 物业管理人员考核制度及标准
- GB/T 45952-2025科技馆运行评估规范
- 2025宁波写字楼租赁市场半年度研究报告-中艾世联
- 2025年事业单位统考《综合应用能力(A类)》试题及答案解析
- 基于项目学习的英语核心素养心得体会
- 第六章-材料的热性能
- 林业政策法规课件
- (完整版)抛丸机安全操作规程
- 马凡综合征课件
评论
0/150
提交评论