![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
socket
socket
jenie
jenie
展开
-
关于libevent在windows进行x64的编译,留作一个简单的记录
软件版本 :libevent-2.1.11-stable.tar.gzlibevent目录下:Makefile.nmakeLIBFLAGS=/nologo 此行修改成 LIBFLAGS=/nologo /MACHINE:X64 buffer.c#define EVBUFFER_MAX_READ 4096修改成 ,此处修改默认libevent只能收4096个字节,改成10m#define EVBUFFER_MAX_READ 1024*1024*10 ..原创 2020-10-23 23:17:27 · 497 阅读 · 0 评论 -
使用nginx以及haproxy进行tcp端口转发配置详解。
先使用nginx来配置。nginx有些高的版本是有tcp 转发功能,低版本是没有。安装nginx后,本人安装是nginx1.16版本 ./configure make && make install 全部默认cd /usr/local/nginx/confvim nginx.conf 最未尾一行加入此名 ,表示将在此目录下的tcp.d下创建conf的文件,进行识别include tcp.d/*.conf;mkdir tcp.d 创建此目录vim port...原创 2020-10-15 16:57:02 · 1387 阅读 · 1 评论 -
CentOS7安装gcc6.3
1.先安装依赖库以下3个和isl(isl找不到)yum install mpfryum install gmpyum install *mpc*2.安装c和c++的依赖库yum install glibc-static libstdc++-staticyum install gccyum install gcc-c++yum install wgetwget http://mirrors.concertpass.com/gcc/releases/gcc-6...原创 2020-10-12 14:32:54 · 914 阅读 · 0 评论 -
让nginx支持php7.2(包括nginx,mysql,php的安装等配置)
1 关于php7.2的安装 ,可以查看https://blog.csdn.net/jenie/article/details/1082233022 mysql源码安装,请查看https://blog.csdn.net/jenie/article/details/1087618913 nginx的安装 比较简单 ./configure make && make install 全部默认就好了。以下通过nginx来支持php.其原理就是通过fastcgi协议来调用p...原创 2020-09-24 00:57:24 · 1065 阅读 · 0 评论 -
centos安装udp,tcp的测试工具
1.下载安装包wget https://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz2.解压缩文件tar -zxvf netcat-0.7.1.tar.gz -C /usr/local3.切换至/usr/local/netcat-0.7.1 1>查看编译配置文件 ./configure 2>编译安装 make && make install4原创 2020-09-22 20:58:03 · 2452 阅读 · 0 评论 -
用户态协议栈实现笔记01
B树的增删查改,速度低于红黑树原创 2020-08-20 22:12:12 · 300 阅读 · 0 评论 -
redis学习笔记01
原创 2020-08-15 22:48:23 · 98 阅读 · 0 评论 -
skynet的内容学习笔记01
强一致性和最终一致性。最终一致性 强调的是通知强一致性 强调的处理结果zookeeper服务协调问题1 配置项目管理2 集群管理 redis 哨兵redis使用setnx()实现分布式锁。 + 过期时间 (执行逻辑时间)setnx(key,唯一标识,timeout);问题。如果中间服务断了,对链路不敏感,需要用超时时间或是另外的进程或线程轮询。zookeeper可以解决此问题。如...原创 2020-08-04 22:36:39 · 321 阅读 · 0 评论 -
关于nginx的学习笔记02
一个进程可以listen多个端口多个进程listen一个端口。(实现方式,先listen再fork)epoll_wait之后才accept。当一个客户端有链接进来的时候。马上调用handler只保证同一时刻只有一个epoll来监听,避免惊群问题。二个listen都在epoll里,只有一个epoll是在挂起的。当一个链接过来了。当一个epoll还没有来得及解锁,另外一个链...原创 2020-08-01 21:17:39 · 199 阅读 · 0 评论 -
关于c语言通过epoll同步和异步方式请求http服务器的json数据
简单总结了下http client的使用。xhttp.h#ifndef MEDIA_XHTTP_H#define MEDIA_XHTTP_H#include <pthread.h>#define HTTP_VERSION "HTTP/1.1"#define USER_AGENT "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2\r\n..原创 2020-07-29 11:16:17 · 435 阅读 · 0 评论 -
zlog日志函数库的简单使用方法
zlog简述:log是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。log4c异常坑爹(有内存泄漏、效率低等等),而且已经停止开发zlog有这些特性:* syslog分类模型,基于规则路由过滤,比log4j模型...原创 2020-06-27 20:29:09 · 595 阅读 · 0 评论 -
c语言socket之epoll模型开发服务器与客户端。
epoll经典方式服务端:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <netinet/in.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/epoll.h>#include <unis原创 2020-06-23 16:27:48 · 1159 阅读 · 0 评论 -
c语言socket之非阻塞模型开发服务器与客户端。
非阻塞方式,你懂的#include <sys/socket.h>#include <sys/types.h>#include <arpa/inet.h>#include <unistd.h>#include <stdio.h>#include <errno.h>int main(int argc, char* argv[]){ int fd = socket(AF_INET, SOCK_STREAM, 0原创 2020-06-23 16:25:23 · 1054 阅读 · 0 评论 -
c语言socket之线程池模型开发服务器与客户端。
事先先创建好线程,等待链接再分配 ,省去创建的时间。#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <pthread.h>#include <unistd.h>const int Port = 8008;pthread_mute.原创 2020-06-23 16:21:29 · 442 阅读 · 0 评论 -
c语言socket之poll模型开发服务器与客户端。
poll模型与select 模型差不多。也简述一下服务端/* server端*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/select.h>#include <sys/time.h>#include <netinet/in.h>#include <sys.原创 2020-06-23 16:17:15 · 588 阅读 · 0 评论 -
c语言socket之select模型开发服务器与客户端。
c语言socket之select模型开发服务器与客户端select模型和poll差不多(只是poll简化了select的一些参数,本质是没有什么区别的)服务端:#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <sys/time.h>#include <sys/ioctl.h.原创 2020-06-23 16:15:50 · 798 阅读 · 0 评论 -
关于netmap的环境安装以及简单示例
1 首先在ubuntu里面,需要把网卡的名字改成eth 类似这样的。vim /etc/default/grub找到GRUB_CMDLINE_LINUX=""改为GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"grub-mkconfig -o /boot/grub/grub.cfg2 安装netmaphttps://gitee.com/mirrors/netmap.git./configuremake &&a...原创 2020-06-23 15:17:56 · 2134 阅读 · 0 评论 -
c语言通过libevent来实现自己的http协议的web服务器
之前通过epoll来实现的,今天我们顺便用libevent来实现一下,对libevent进行一次简单的演练,之前参照这个文章了解http协议https://blog.csdn.net/jenie/article/details/106893512libevent的安装说明的话:安装1.下载下载地址:http://libevent.org/2.解压文件[root@localhost opt]# tar -zxvf libevent-2.1.8-stable.tar.gz 13.创原创 2020-06-22 00:09:53 · 790 阅读 · 0 评论 -
c语言通过epoll来实现http协议的web服务器
HTTP协议引言HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HE原创 2020-06-22 00:03:10 · 2200 阅读 · 0 评论 -
关于 openssl的几种重要并常用的用法,用c语言进行实践(base64 ,md5,rsa,ssh_hash,file,socket,mem,random )
安装及说明,请参考https://blog.csdn.net/jenie/article/details/106741002base64 编解码:#include <string.h>#include <openssl/evp.h> int main() { unsigned char in[100], base64[150], decode[100]; EVP_ENCODE_CTX ectx; EVP_EncodeI.原创 2020-06-18 18:28:32 · 269 阅读 · 0 评论 -
一篇文章讲透zmq的四种模型以及代码实现全过程。
之前有相关的笔记及内容:https://blog.csdn.net/jenie/article/details/106729289安装及简单示例见以下:https://blog.csdn.net/jenie/article/details/105921642# Zeromq的几种模式比较* **REQ-REP:**请求-应答型,同步,TCP,1对n(服务器),n对1(服务器).* **PUB-SUB:** 发布-订阅,经典模式适用于单向的数据发布,更新流既没有起点也没有终点,类...原创 2020-06-18 18:16:17 · 4046 阅读 · 1 评论 -
关于C语言实现去中心化的网络设计 — P2P的代码实现
那我们如何来进行检测呢,如图所示如何穿透见证奇迹的时候到了。先实现个,整个代码逻辑和实现都是按原理方式实现udp.h#ifndef __UDP_H__#define __UDP_H__#include <stdio.h>#include <stdlib.h>...原创 2020-06-18 17:16:06 · 1172 阅读 · 3 评论 -
c语言实现ftp客户端,下载ftp的文件内容信息
由于工作需要,需要做一个从ftp服务器下载相关文件内容,保存本地ftp.h#ifndef TIANJING_FTP_H#define TIANJING_FTP_H#include <stdio.h>//链接服务器int ftp_connect( char *host, int port, char *user, char *pwd );//断开服务器int ftp_quit( int c_sock);//设置表示类型int ftp_type( int c_s.原创 2020-06-18 10:44:43 · 2953 阅读 · 1 评论 -
Jsoncpp的安装配置及示例使用
Jsoncpp 安装jsoncpp 是一个 c++封装的 json 包,跨平台支持 windows、linux、unix 等多系统。 linux 下面编译需要使用到 cmake 进行编译。 下载 jsoncpp 源码 git clone https://github.com/open-source-parsers/jsoncpp.git 进到目录 cd jsoncpp-master创建目录 mkdir -p build/release进到编译目录原创 2020-06-13 11:29:04 · 3289 阅读 · 0 评论 -
关于cjson库的相关操作方法总结(构造,添加,删除,修改)
cjson_test.c#include <stdio.h>#include <stdlib.h>#include "cJSON.h"#include <string.h>/**{ "name": "milo", "age": 80, "professional": {专业 "english": 4, "putonghua": 2, "computer": 4 }, "languag.原创 2020-06-13 11:16:17 · 5436 阅读 · 0 评论 -
消息队列之zmq的相关原理笔记
原创 2020-06-13 11:03:16 · 669 阅读 · 0 评论 -
c语言内存池原理及实现
内存池,简单的讲就是,内存不由系统管理,而由应用程序自己或另行委托第三者管理的内存空间。通俗点说就是,所谓内存池就是应用程序从系统那里批发来的内存空间。对于使用量较大且需要频繁申请和释放内存的应用程序来说,使用内存池会减少运行时间,而对于系统来讲,批发内存可以有效减少零售所带来的内存内存池的结构体定义:内存池的流程#include <stdlib.h>#include <stdio.h>#include <...原创 2020-06-03 22:48:20 · 2124 阅读 · 0 评论 -
关于线程池原理及相关笔记
如何封装成模块#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include <pthread.h>#define LL_ADD(item,list) do { \ item-&g...原创 2020-05-30 16:21:47 · 216 阅读 · 0 评论 -
CENTOS7下安装REDIS
一、安装redis第一步:下载redis安装包wget http://download.redis.io/releases/redis-4.0.6.tar.gz[root@iZwz991stxdwj560bfmadtZ local]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz--2017-12-13 12:35:12-- http://download.redis.io/releases/redis-4.0.6.ta原创 2020-05-24 00:27:50 · 92 阅读 · 0 评论 -
html5使用websocket发送(PCM)音频数据到服务器,再转在wav文件
通过websocket发送音频数据。<html><head> <meta charset="utf-8"> <title>test</title></head><body><div> <button id="intercomBegin">开始对讲</button> <button id="intercomEnd">关闭对讲<.原创 2020-05-23 12:47:05 · 9419 阅读 · 4 评论 -
同步和异步,阻塞和非阻塞的关系之代码实现异步http客户端
上一章讲解一些简单笔记https://blog.csdn.net/jenie/article/details/106267740今天来一个实例如何实现异步的http请求:按以下四步走1 init_context a.pthread_create b.epoll_create2 uninit_context a.pthread_cancel b.close3 commit() a.准备socket b connect c.protocol ...原创 2020-05-22 19:32:15 · 577 阅读 · 0 评论 -
关于负载均衡haproxy的使用方法和场景。通过windows转到虚拟机,运行linux程序。
之前有个文章讲了一下 关于nginx的相关笔记https://blog.csdn.net/jenie/article/details/106222213这不刚搞完,工作上有个应用场景。公司有二台比较不错的服务器,一台是windows,一台是linux。linux应该用饱满了。windows空闲没怎么用,但有些windows的小应用,供客户演示的,然后,我们的程序全部是linux平台下开发的,为了兼容,因此,打算用方案。在windows装虚拟机。装个5-10个,然后把程序装到虚拟机上,然后通.原创 2020-05-22 19:20:40 · 393 阅读 · 0 评论 -
同步和异步,阻塞和非阻塞的关系
同步和异步形容二者之间的关系,业务流程阻塞和非阻塞形容io socket的状态可以组合成同步阻塞,同步非阻塞,异步阻塞,异步非阻塞关键点:创建一个线程,callback io多路复用epollking式四元组1 init_context a.pthread_create b.epoll_create2 uninit_context a.pthread_cancel b.close3 commit() a.准备socket b ...原创 2020-05-21 23:06:25 · 278 阅读 · 0 评论 -
如何用c语言实现对目录或是文件进行文件的添加,修改,删除监控(inotify)。
其实通过inotify来实现,具体代码实现如下:#include<stdio.h>#include<assert.h>#include<unistd.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<sys/types.h>#include<sys/inotify.h>#include<limits.h&g.原创 2020-05-18 16:26:01 · 1731 阅读 · 0 评论 -
谈谈如何通过c语言实现不断读取变化增长的文件(例如实时监控流媒体视频文件)
通常我们很多场合都需要用到如何读增量的文件,其实应用领域还是蛮多的。日志读取。数据同步等应用场合。都是可以用上的。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#define FILE_LINE_LEN 1024long g_curr_offset = 0;int32_t c_tail(const char *file);int3原创 2020-05-18 16:22:47 · 1274 阅读 · 0 评论 -
关于c语言使用openssl的实现websocket底层协议功能
1. 获取安装包。wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz2. 解压。tar -xzvf openssl-1.1.1c.tar.gz3. 配置。./Configure --help# 配置参数选项--openssldir=OPENSSLDIR #配置文件目录,默认是/usr/local/ssl--prefix=DIR #安装目录,默认为 OPENSSLDIR 目录[no-]threads #是否编译支持多线程的库。默原创 2020-05-16 13:18:34 · 981 阅读 · 0 评论 -
分布式任务调度框架开源项目以及c如何实现核心一点的任务调度方法。
一、Quartz支持集群和分布式,但是没有友好的管理界面,功能单一,对于管理调用的任务比较困难。quartz使用数据库锁。在quartz的集群解决方案里有张表scheduler_locks,quartz采用了悲观锁的方式对triggers表进行行加锁,以保证任务同步的正确性。一旦某一个节点上面的线程获取了该锁,那么这个Job就会在这台机器上被执行,同时这个锁就会被这台机器占用。同时另外一台机器也会想要触发这个任务,但是锁已经被占用了,就只能等待,直到这个锁被释放。quartz的分布式调度策略是以数原创 2020-05-12 01:34:12 · 859 阅读 · 0 评论 -
Epoll原理解析及代码
Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?文章会从网卡接收数据的流程讲起,串联起 CPU 中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、Select 到 Epoll 的进化过程;最后探究 Epoll 的实现细节。从网卡接收数据说起下边是一个典型的计算机结构图,计算机由 CPU、存储器(内存)与网络接口等部件组成,了解 Epoll 本质的第一步,要从硬件的角度看计算机怎样接收网络数据。计算机结构图(图片来源:..原创 2020-05-12 01:12:04 · 256 阅读 · 1 评论 -
如何把c语言的结构体,直接存到redis里,然后再获取出来
应用场景。针对线程内,进程内的数据共享。#include <stdio.h>#include <time.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <sstream>#include <hiredis.h>typedef struct st{原创 2020-05-09 14:41:39 · 1306 阅读 · 0 评论 -
RabbitMQ的服务端和客户端RabbitMQ-c的简单使用。
1 安装openssl依赖。apt-get install libssl-dev2 安装 rabbitmq-c和git clone https://github.com/alanxz/rabbitmq-c cd rabbitmq-cgit clone https://github.com/rabbitmq/rabbitmq-codegen.gitmv rabbi...原创 2020-05-05 04:54:27 · 2227 阅读 · 1 评论