/************************************************************

去年学C语言socket通信时花三天时间写的。

功能

A,私聊 B,群聊,C,从服务器下载文件 D,上传文件到服务器,E,用户上下线通知,F,刷新在线用户列表,E,下线

1,一般情况请使用SUDO权限运行

2,服务器文件中心路径为 /home/file_centre,若没有该文件夹,请创建

3,客户端下载到的文件保存路径为 /home/file_download使用该功能前,请先创建该文件夹

4,请在linux环境下测试运行(我使用的是ubuntu)

*****************************************************************/

//程序测试截图

说明:一共是三个文件:头文件,服务器代码,客户端代码。

/*服务器接收消息后,创建的在线用户列表*/

struct user_info{

char user_name[20];

int  id;

struct sockaddr_in cli_addr;

struct user_info *next;

};

/*客户端给服务器发送的消息*/

struct msg {

char type;

char self_name[20];

char dst_name[20];

char data[MAXSIZE];

};

/*消息类型定义*/

enum msg_type{

LOG_IN = 1,     //登录

REFRESH,         //要求刷新用户在线用户(重新打印在线用户)

CHAT_PRI,        //私聊消息

CHAT_ALL,        //群聊消息

DOWNLOAD,        //从服务器下载文件(下载之前先打印文件列表)

UPLOAD,         //上传文件到服务器

OFFLINE,      //下线通知

OVER,            //服务器发送本次消息结束

ERROR,           //重复登录

FILE_NAME,       //发送文件列表

FILE_ERROR //选择文件名失败

};

基于linux用C语言编写的局域网通信软件(在ubuntu上正常运行)相关推荐

  1. 软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...

    基于AT89C1单片机C语言编写的计算器 #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; ...

  2. linux中用c语言编写一个经纬度转换大地坐标

    在Linux中用C语言编写一个经纬度转换大地坐标的程序,需要用到以下步骤: 包含相关的头文件,例如"math.h". 定义必要的常量和变量. 输入经纬度坐标. 将经纬度转换为弧度. ...

  3. 基于linux的c语言版本的俄罗斯方块

    基于linux的c语言版本的俄罗斯方块 文章目录 基于linux的c语言版本的俄罗斯方块 前言 一.前期准备 二.使用步骤 1.创建俄罗斯方块DATA库 2.函数声明 3.创建时钟定时器 4.游戏区域 ...

  4. 基于Windows10基于Linux的C语言笔记Ⅱ

    WHAT YOU NEED: 安装 WSL 1 的 Win 10 或是 Linux: GNU 的 C/C++ 编译器(gcc): vim/vi.nano等编辑器. (或者你有一个自己熟悉的系统与IDE ...

  5. 【C++FunCode】基于Funcode使用C++语言编写小游戏(小鲨鱼历险记)

    一.前言 大一暑假参加了山东省软件设计大赛,基于FunCode平台使用C++语言编写了大鱼吃小鱼游戏,其美名曰小鲨鱼历险记,哈哈.比赛成绩惨烈,只拿了一个省三,赛后也进行了分析总结,主要还是太不重视比 ...

  6. linux系统c 如何使用教程,基于Linux操作系统的C语言编译和调试方法解析

    摘 要:文章先介绍了GCC编译器相关内容,包括GCC编译程序和GCC编译选项,随后介绍了GDB调试程序相关内容,包括GDB具体操作和GDB基础命令,最后介绍了C语言编写中的注意事项,希望能给相关人士提 ...

  7. 黑白棋代码Linux程序,C语言编写的黑白棋游戏源代码.doc

    PAGE PAGE 1 C语言编写的黑白棋游戏源代码 /*3.3.4 源程序*/ #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x ...

  8. 基于Windows10基于Linux的C语言笔记Ⅰ

    这玩意儿就是自己的学习笔记,不过,也可以用来入门学习C语言.However,你需要: 学习C语言兴致, Windows10(或者你有一台Linux系统的电脑), 会用vim/vi.nano或者(其实会 ...

  9. 基于Linux用C语言实现TCP半双工通信和UDP半双工通信

    文章目录 TCP协议/UDP协议介绍 三种通信方式 实现TCP半双工通信 所用到的结构体与函数 源代码 运行结果 实现UDP半双工通信 源代码 运行结果 参考文章 TCP协议/UDP协议介绍 TCP/ ...

最新文章

  1. linux sersync2 ssh start=true,rsync+nfs+sersync实战案例
  2. C++ 调试技术:addr2line
  3. H3C路由器的备份与还原(1)
  4. pre使页面正确显示文本格式
  5. go语言学习(2)rune以及strings
  6. 答TOGAF企业架构的一些问题
  7. 浓缩版java8新特性
  8. svgsprite的svg-sprite-loader在vue中的使用及vue-cli如何配置
  9. TypeScript 的变量定义
  10. Service Worker 的一个实战例子
  11. mysql使用字符函数length,获取参数值的字节个数
  12. 模板:广义二项式反演/广义容斥(组合数学)
  13. 工作随想---关于业务流程,落实责任制
  14. 深度剖析Java数据结构之队列(一)——双端队列(ArrayDeque)
  15. jQuery特效:实现抽奖
  16. https://www.bejson.com/devtools/properties2yaml/
  17. springboot写发送邮件报错Field javaMailSender in com.gzh.service.impl.IMailServiceImpl
  18. Linux stress命令详解
  19. TestNG教程二:testNG常用测试类型
  20. Openwrt如何添加SD_Card?看这里

热门文章

  1. 物质的折射率和光的折射率的关系
  2. GitLab API 接入指南
  3. ViewFlipper和ViewPager的区别
  4. IDEA修改默认的新建项目路径
  5. 非常不错的编程技术教程
  6. halcon measure_pos和measure_pairs详解
  7. Aspose.Words for .NET Crack 23.1.0
  8. Oracle Core: Essential Internals for DBAs and Developers
  9. 入门深度学习文本识别
  10. Intel TBB 介绍