makefile工程文件

  • V9_468446
    了解作者
  • 24.9KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-27 04:56
    上传日期
Linux的工程文件的范本,需要的时候直接调用修改就行。
client(用于学习其中的makefile文件).zip
  • client(用于学习其中的makefile文件)
  • client
    14.5KB
  • pack_message
  • src
  • pack_message.o
    7.1KB
  • pack_message.c
    10.8KB
  • Makefile
    72B
  • scripts
  • Makefile
    218B
  • Makefile
    403B
  • main
  • src
  • main.o
    4.4KB
  • main.c
    5.6KB
  • Makefile
    72B
  • check_putin
  • src
  • check_putin.c
    2.3KB
  • check_putin.o
    2.6KB
  • Makefile
    72B
  • include
  • myhead.h
    3KB
内容介绍
/* * pack_message.c * * Created on: 2011-7-27 * Author: */ #include "../../include/myhead.h" /*函数作用:输出欢迎信息 *输入:无 *输出:介绍命令 *返回值:无 */ void login() { printf( "*****************************************************************\n"); printf("Welcome to chat rooms \n"); printf("Input log login\n"); printf("Input reg registered\n"); printf("Input to speaking to someone sto \n"); printf("输入sta对大家说话\n"); printf("输入che查看当前在线用户\n"); printf("输入hlp查看帮助\n"); printf("输入/用户/短语 发送短语 输入:)或:(发送表情\n"); printf("支持的短语:/welcome,/smart,/funny\n"); printf("输入tra传输文件(当前版本暫时只支持文本文件传输)\n"); printf("超级用户命令:nos禁言,say解禁,out踢出在线用户\n"); printf("输入ext退出聊天室\n"); printf( "*****************************************************************\n"); } /*函数作用:将数据打包 *输入:动作action ,指向msg数据结构的指针*msg,输入的命令*cmd *输出: *返回值: 成功返回0 */ int pack_message(int action, Message *msg, char *cmd) { char buff[1024]; /* 缓冲区 */ int i; int j; /* 根据action动作选项来选择下一步 */ switch (action) { /* 当命令为登录时 */ case (LOGIN): { while (1) /* 死循环,如果用户名过短或过长就重新读取 */ { printf("请输入您的用户名,小于20个字节:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->user[i] = buff[i]; } if (strlen(buff) == 1) { printf("用户名为空!\n"); continue; } if (i >= 20) { printf("用户名过长!\n"); continue; } msg->user[i] = '\0'; break; } while (1)/* 死循环,如果密码过短或过长就重新读取 */ { printf("请输入您的密码,小于20个字节:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->password[i] = buff[i]; } if (strlen(buff) == 1) { printf("密码为空!\n"); continue; } if (i >= 20) { printf("密码过长!\n"); continue; } msg->password[i] = '\0'; break; } } break; /* 当命令为注册时 */ case (REGIST): { while (1)/* 循环,用户名过长或过短则重新读取 */ { printf("请输入您的用户名,小于20个字节:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->user[i] = buff[i]; } if (i >= 20) { printf("用户名过长!\n"); continue; } msg->user[i] = '\0'; break; } char tmp[20];/* 临时字符串,用来比较两次的密码输入是否相同 */ /* 循环体,检查两次密码输入是否相同 */ while ((strcmp(msg->password, tmp) != 0) || (strlen(msg->password) == 0)) { while (1) /* 循环,当密码过长或过短就重新读取 */ { printf("请输入您的密码,小于20个字节:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->password[i] = buff[i]; } if (i >= 20) { printf("密码过长!\n"); continue; } msg->password[i] = '\0'; strcpy(tmp, msg->password); printf("请再次输入密码,小于20字节:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->password[i] = buff[i]; } if (i >= 20) { printf("密码过长!\n"); continue; } msg->password[i] = '\0'; if (strcmp(msg->password, tmp) != 0) { printf("两次输入不一致!\n"); } break; } } } break; /* 当命令为对单人聊天时 */ case (CHATONE): { /* 把目标的用户名和聊天内容保存到msg数据包中 */ printf("请输入您需要发送消息的对象:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->target[i] = buff[i]; } msg->target[i] = '\0'; printf("请输入您需要发送的消息:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->message[i] = buff[i]; } msg->message[i] = '\0'; } break; /* 当命令为对所有人聊天 */ case (CHATALL): { strcpy(msg->target, "all"); printf("请输入您需要发送的消息:\n"); fgets(buff, 1024, stdin); for (i = 0; buff[i] != '\n'; i++) { msg->message[i] = buff[i]; } msg->message[i] = '\0'; } break; /* 当命令为传输文件请求时 */ case (TRANS_FILENAME): { int i; int j; char buffer[1024]; char tmp[1024]; /* 取得需要发送的文件的对象 */ printf("请输入您需要传输文件的对象:\n"); fgets(buffer, 1024, stdin); for (i = 0; buffer[i] != '\n'; i++) { msg->target[i] = buffer[i]; } msg->target[i] = '\0'; /* 取得文件路径 */ while (1) { bzero(buffer, 1024); printf("请输入需要传输的文件:(绝对路径)\n"); fgets(buffer, 1024, stdin); bzero(tmp, 1024); for (i = 0; buffer[i] != '\n'; i++) /* 去掉换行符 */ { tmp[i] = buffer[i]; } tmp[i] = '\0'; /* 检查文件路径是否正确 */ fd_read = open(tmp, O_RDWR); if (fd_read < 0) { printf("不存在此文件,打开失败!\n"); return 1; } break; } /* 取出文件名称 */ j = 0; i = strlen(tmp) - 1; bzero(buffer, 1024); while (tmp[i] != '/') { i--; } for (i = i + 1; i <= strlen(tmp) - 1; i++) { buffer[j] = tmp[i]; j++; } buffer[j] = '\0'; strcpy(msg->message, buffer); msg->action = TRANS_FILENAME; printf("已向%s发送请求,等待回复\n", msg->target); } break; /* 开始发送文件 */ case (TRANS_FILEING): { int n; while (1) { bzero(buff, strlen(buff)); bzero(msg->message, strlen(msg->message)); n = read(fd_read, buff, 900); buff[n] = '\0'; /* 文件读取到末尾时动作信息改变为TRANS_FILE_FINISH,并跳出循环 */ if (n == 0) { printf("发送完毕\n"); msg->action = TRANS_FILE_FINISH; close(fd_read); break; } msg->action = TRANS_FILEING;
评论
    相关推荐
    • Linux课件
      本课件,浅显易懂,对需要快速入门Linux的人将有极大的帮助。 里面包括在Linux上配置网络的相关知识和Linux的基础知识。
    • Linux教程
      第一章:Linux系统的基本知识 第二章:Linux系统安装 第三章:Linux文本编辑 第四章:Linux常用命令与基本管理 第五章:Linux Shell的使用 第六章:Linux应用程序安装与管理 第七章:Linux核心...
    • linux
      linux 深入了解Linux OS和编程的概念
    • Linux procfs
      Linux procfs相关资料,里面有N个文档。 Linux procfs详解 .doc Linux_proc.pdf linux_proc_文件程序.doc linux_procfs详解.txt linux_proc文件系统.doc Linux中proc文件详解.pdf Proc 源代码分析.pdf proc_访问_...
    • Linux基础
      适合初学者入门,使Linux不在枯燥;高级编程者可以为你打开另外一扇Linux的大门! 让你感受Linux的魅力!
    • linux book
      一本关于Linux 使用 非常详尽的书! 一本关于Linux 使用 非常详尽的书! 一本关于Linux 使用 非常详尽的书!
    • linux linux linux
      linux基础教程linux基础教程linux基础教程linux基础教程
    • linux电子书
      本书是为广大Linux学习者制做的,本书内容基础,语言简短简洁,也节选了一些比较经典而且一定要了解的Linux知识,循序渐进的介绍Linux相关知识,从入门到提高,希望对所有学习Linux的朋友都有帮助。
    • Linux命令
      1、Linux 命令全集 2、Linux 入门常用命令 3、Linux--tar命令 4、Linux实用命令 5、Linux命令集
    • linux
      上海某公司linux机密培训文件