- 博客(139)
- 资源 (15)
- 收藏
- 关注
原创 聊天小项目(二)一对一聊天之服务端链表化
改版:用链表结收客户端的链接。server.c#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <stdlib.h>#include &...
2020-02-20 20:53:10 520
原创 套接字之:accept()
accept()是在一个套接口接受的一个连接。函数从s的等待连接队列中抽取第一个连接,创建一个与s同类的新的套接口并返回句柄。SOCKET accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);参数 sockfd:套接字描述符,该套接口在listen()后监听连接。 addr:(可选)指针,指向...
2020-02-20 17:40:36 1925
原创 阻塞与非阻塞、连接与非连接
在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。...
2020-02-20 00:46:17 514
原创 套接字之读写:recvfrom()、read() 和sendto() 、write()
1、read() 和write()#include <unistd.h> ssize_t read(int fd, void *buf, size_t count); 成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0。 ssize_t write(int fd, const void *buf, size_t...
2020-02-19 19:20:07 7399
原创 Linux下获取本地IP、mask等网卡信息
网卡的信息储存在一个叫 ifreq 的结构体里面,获取本地IP实质上是从该结构体取想要的信息。该结构体如下:#define IFHWADDRLEN 6 #define IFNAMSIZ IF_NAMESIZE struct ifreq { union { char ifrn_name[IFNAMSIZ]; // Interface name, e.g...
2020-02-16 20:02:12 1090
原创 window获取网卡信息
实质上对结构体IP_ADAPTER_INFO的遍历,该结构体包含本地计算机某一个网络适配器的信息。#define MAX_ADAPTER_NAME_LENGTH 256#define MAX_ADAPTER_DESCRIPTION_LENGTH 128#define MAX_ADAPTER_ADDRESS_LENGTH 8typedef struct _IP_ADAPTER_INFO ...
2020-02-16 09:52:32 1387
原创 如何用rand实现产生固定长度的随机数?结构体字符数组赋值?以及如何拷贝字符串?
总的代码如下;#include <string.h>#include <stdio.h>#include <stdlib.h>#include <Windows.h>#define shell_command "aaaasdff"#define snprintf(dest, size, format, ...) _snprintf_...
2020-02-15 13:53:33 458
原创 MATLAB入门级演示
实在是不想贴出来,因为实在是真的太简单了,但是文档了删了又白白浪费了自己的时间,左思右想还是贴出来算了。1、Matlab图像常用函数:查看一个函数的三种方式:doc / help / edit ayuhz空间滤波:代码:clear,clc; Img = imread('./T002.bmp');% figure(1); imshow(Img);% 1. 直方图处理% ...
2020-02-14 20:27:15 415
原创 聊天小项目之多客户端聊天
第二步:多用户同时在线聊天需求分析:能支持对个用户同时聊天,实现群聊功能;方法分析:采用多线程处理方式。不同的客户端开启不同的工作线程,共享同一进程的内存信息。服务端转发某一客户端发送的信息给其他客户端,实现信息实时共享。服务端代码:# server.c#include <stdio.h>#include <string.h>#include <...
2020-02-07 19:40:26 336
原创 Mobaxterm连接Linux 虚拟机出现Network error: Connection refused错误
1、查看SSH服务有没有安装# rpm -qa | grep ssh列出很多安装包表示已经安装ssh2、查看SSH服务有没有开启# service sshd status3、开启或重启ssh服务# service sshd start即可解决问题。若出现其他情况,可联系我一起解决。...
2020-02-07 13:34:44 18213 2
原创 聊天小项目之UDP通信模块
打算利用所学知识写一个基于UDP的聊天小项目,大致分为几个阶段:1、网络通信模块封装;2、客户端发送消息模块封装;3、服务端接受消息模块封装;服务端代码:#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#inclu...
2020-02-04 15:27:52 281
原创 strcpy和strncpy、sprintf和snprintf、strcat和strncat、
警告 1 warning C4013: “snprintf”未定义;这种情况需要加入宏定义:#if _MSC_VER#define snprintf _snprintf#endif1、snprintf和strncpy的区别:snprintf会在字符串末尾添加字符串结束符 ‘\0’ ,strncpy不会。#include <Windows.h>#i...
2019-12-14 11:19:22 839
原创 Windows和Linux定时器的使用
timer 1:/*--------------------windows:----------------------------------*/方法1:CreateTimerQueueTimervoid process_timer(){ HANDLE g_Event = NULL; // 定时器句柄 HANDLE hTimer = NULL; HANDLE hTime...
2019-12-12 08:44:56 380
转载 Linux网络事件通知机制
本文为转载:https://blog.csdn.net/iampisfan/article/details/534701881. kernel space –> kernel space1.1. notifier_block原理介绍linux内核中各个子系统相互依赖,当其中某个子系统状态发送改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这...
2019-11-22 21:24:09 2849 1
转载 Linux下gcc编译生成动态链接库*.so文件并调用它
转载出处:https://blog.csdn.net/flyztek/article/details/73612469Linux下gcc编译生成动态链接库*.so文件并调用它动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1...
2019-11-21 22:44:33 495
原创 yum list :Another app is currently holding the yum lock; waiting for it to exit...
方法一:遇到这种问题,可能是因为启动了多个进程:杀死了这些进程:然后重启yum list:成功:注意:这是在联网情况下。方法二:进入 /etc/yum.repos.d进入CentOS-Base.repo注释掉所有的mirrorlist。修改baseurl为自己yum源挂载目录,不会挂载的请看:https://blog.csdn.ne...
2019-11-08 19:48:22 295
原创 autoreconf: configure.ac: not using Libtool
思路就是去yum源里面找到依赖包,然后安装:查找依赖包:yum list | grep libtool安装依赖包:yum install -y libtool一般的话是直接安装编译环境,建议报错的时候把运行环境也同时安装了:编译环境包:libtool运行环境包:libtool-devel其他问题类似解决办法。例如:...
2019-10-19 19:48:27 2637
原创 configure.ac:37:error: must install xorg-macros 1.3 or later before running antoconf
找到configure.ac,进入编辑 在m4_ifndf的中间添加[echo “$XORG_MACROS_VERSION”]最初本来是想查看XORG_MACROS_VERSION这个变量是什么的,结果这么一添加就不报错了。提供查找configure.ac的方法:find / -name "*configure.ac*"...
2019-10-19 19:37:44 1155
原创 解决:not a dynamic executable
经常会遇到不是动态连接的提示,提供三种方法查看动态链接库。方法1:ldd ./autogen.sh方法2:LD_TRACE_LOADED_OBJECTS=1 ./autogen.sh方法3:readelf -d autogen.sh | grep NEEDED...
2019-10-19 19:32:23 9766
原创 Can't locate Automake/Config.pm in @INC(@INC contains: /usr/local/share/automake-1.14 /xxxxx)
总是会遇到这种问题:解决方法:上传压缩包,用解压命令解压后安装。亲测有效。试过改路径啥的都没用。
2019-10-19 11:11:06 3128
原创 SSH走过的坑:netstat command not found / Destination Host Unreachable /
1、创建虚拟机:2、在自己的虚拟机上设置IP,先ping 在当前网段哪个IP可用。进入/etc/sysconfig/network-scripts,vi ifcfg-eth0,IPADDR为当前网段可用的IP,配置网关、子网掩码等信息,重要:ONBOOT=yes3、service network restart重启网络。CentOs7中,这个地方应该使用systemctl ne...
2019-10-16 18:50:14 1344
原创 解决:error: Libtool library used but 'LIBTOOL' is undefined
在编译spice库函数pixman时,出现:pixman/Makefile.am:1: error: Libtool library used but 'LIBTOOL' is undefinedpixman/Makefile.am:1: The usual way to define 'LIBTOOL' is to add 'LT_INIT'pixman/Makefile.am:1...
2019-10-12 11:21:16 16078 5
原创 根据GDIU获取路径部分代码
// 1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <fstream>#include <string.h>#include <windows.h>#include <setupapi.h>#include <ob...
2019-09-27 10:56:23 221
原创 spice整体框架理解
static int do_spice_init(SpiceCoreInterface *core_interface): SpiceCoreInterface 的数据类型:struct SpiceCoreInterface { SpiceBaseInterface base;...........................}struct SpiceBaseInt...
2019-09-12 17:16:50 3202 1
原创 关于进程创建fork函数的理解
fork一次返回2个值,返回三类值。函数原型:pid_t fork();正:fork父进程,返回子进程ID;零:fork子进程,返回0;负:fork失败。 fock函数调用一次却返回两次。向父进程返回子进程的ID,向子进程中返回0,这是因为父进程可能存在很多过子进程,所以必须通过这个返回的子进程ID来跟踪子进程,而子进程只有一个父进程,他的ID可以通过getppid取...
2019-08-19 16:39:14 400
原创 线程的创建
我们编写的大多数程序都是单线程的,就是程序按照一定的顺序来执行,如果使用线程的话,程序就会在我们创建线程的地方分叉编程两个程序执行。区别于子进程,子进程是通过拷贝父进程的地址空间来执行,而线程则是通过共享代码来执行的。线程的相同代码会被执行几次,使用线程的好处就是可以节省资源。由于线程是共享代码的,所以没有进程调度那么复杂。线程的创建需要的函数:pthread_create()...
2019-08-18 18:08:20 221
原创 守护进程的创建
基本思想:首先创建一个子进程,然后子进程杀死父进程,信号处理所有的工作由子进程来处理/*************************************** * Author : fxHui** Histtory :2019-8-18***************************************/#include <string.h> //...
2019-08-18 15:51:22 141
原创 创建进程
系统使用fork函数创建进程,采用wait函数查看结束状态。/*************************************** * Author : fxHui** Histtory :2019-8-18***************************************/#include <string.h> // 使用strerror...
2019-08-18 14:31:59 317
原创 进程的标志(获取进程ID、父进程ID、进程所有者ID、用户ID、有效用户ID、组ID、有效组ID)
进程ID:进程的标识。父进程ID:进程的父进程。进程所有者ID:进程是为程序服务的,而程序是为了用户服务的.系统为了找到进程的用户名,还为进程和 用户建立联系.这个用户称为进程的所有者。用户ID:进程使用者有效用户ID:由于进程要用到一些资源,而 Linux 对系统资源是进行保护的,为了获取一定资源进程还有一个有效用户 ID.这个 ID 和系统的资源使用有关涉及到进程的权限. ...
2019-08-17 21:53:19 1825
原创 根据yuv文件中的内容,编写yuv直方图统计小程序
yuv的采样为4:4:4格式,分别对Y、U、V三个分量的情况进行统计,打印输出。/**************************************************** Imhist.cpp -- calculate the Histogram of YUV * Image,** Purpose:* This fi...
2019-08-15 16:51:12 695
原创 配置yum源为光盘,挂载后安装程序
一:挂载光盘1、mkdir /mnt/cdrom:创建新挂载点2、临时挂载:mount /dev/cdrom /mnt/cdrom二、配置yum源1、cd /etc/yum.repos :进入源目录2、进入该目录查看:ll[root@localhost yum.repos.d]# lltotal 4drwxr-xr-x. 2 root root 187...
2019-08-08 20:28:02 1138
原创 matlab实现同态滤波
同态滤波的原理框图matlab代码:clear,clc;Img = imread('tape.png');L = size(Img); % 计算图像大小if numel(L)>2 %判断图像是否是彩色图像 gra...
2019-04-23 20:05:51 5726 5
原创 matlab实现PCA
principal component analysis(PCA) 主成分分析法是一种数学变换的方法, 它把给定的一组相关变量通过线性变换转成另一组不相关的变量,这些新的变量按照方差依次递减的顺序排列。在数学变换中保持变量的总方差不变,使第一变量具有最大的方差,称为第一主成分,第二变量的方差次大,并且和第一变量不相关,称为第二主成分。依次类推,I个变量就有I个主成分。基本...
2019-04-23 18:54:45 8861 3
转载 matlab之Canny边缘检测
转载自:https://blog.csdn.net/humanking7/article/details/46606791文章目录 Canny边缘检测基本特征如下: Canny边缘检测算法步骤: 步骤详解 步骤1:用高斯滤波器平滑处理原图像 步骤2:用一阶偏导的有限差分进行计算梯度的幅值和方向...
2019-04-23 16:52:04 13708
原创 matlab实现图像的高斯滤波
转载地址:https://blog.csdn.net/lvquanye9483/article/details/81592574高斯滤波的含义:高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的作用:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波函数一维高斯分布二维高斯分...
2019-04-23 16:09:08 74991 3
转载 MATLAB图像处理工具箱
转载:https://blog.csdn.net/BAR_WORKSHOP/article/details/81009900
2019-03-12 19:39:18 5424
原创 C语言实现BMP图像处理(哈夫曼编码)
哈夫曼(Huffman)编码是一种常用的压缩编码方法,是 Huffman 于 1952 年为压缩文本文件建立的。它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。下面给出具体的 Huffman 编码算法:(1) 首先统计出每个符号出现的频率,上例 S0 到 S7 的出现频率分别为 4...
2018-12-25 20:10:58 4542 1
原创 C语言实现BMP图像处理(边缘检测)
以Sobel算子为例,其余模板算子卷积代码部分同Sobel算子。如:高斯算子、拉普拉斯算子等#include <stdio.h>#include <stdlib.h>#include <Windows.h>#include <math.h>int main(int* argc, char** argv){ FILE* fp = f...
2018-12-25 19:44:51 4402 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人