gepanqiang3020的博客

私信 关注
TBG2017
码龄5年
  • 46,968
    被访问量
  • 7
    原创文章
  • 163,677
    作者排名
  • 22
    粉丝数量
  • 于 2016-04-18 加入CSDN
获得成就
  • 获得35次点赞
  • 内容获得11次评论
  • 获得109次收藏
荣誉勋章
TA的专栏
  • c语言笔记
    2篇
  • socket网络编程
    5篇
  • 音频解码
    2篇
  • c++笔记
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

学习C++的一点归纳总结

最近用了几天时间学习c++,使用的书籍是 C++ primer plus ,(虽然网上对这本plus版本评价很差,但是个人感觉作为初学者入门还是不错的) C++作为一门面向对象的语言,面向对象和多态是其特点:其中,面向对象是为了封装数据和函数,便于操作使用,而多态则是使同名的函数的普遍性更强,使用起来更方便(STL中的string类,相比传统的字符串数组,就是一个很好的例子) 个人感觉,要熟练运
原创
235阅读
0评论
1点赞
发布博客于 4 年前

linux下 socket的多人聊天室

用socket实现一个多人聊天室的思路很简单,即在服务器端定义一个fd的int型数组,用来存储已经连接的客户端的socket连接套接字fd(因为发送和接收数据都只需要借助连接套接字fd),当服务器接收到来自某一客户端的数据时,直接转发给其他所有连接着的客户端,即完成了多人聊天室。 服务器端:多线程进行数据的转发 客户端:创建一个线程专门用来接收数据,主线程进行输入数据等操作 下面直接贴代码:
原创
7536阅读
6评论
10点赞
发布博客于 4 年前

linux下 基于libmad的socket多用户mp3音频在线播放服务器

在众多大神的帮助下,这个在线播放流媒体服务器终于完成啦。。。。 这个mp3流媒体服务器设计的思路是,服务器程序server用多线程实现和多个客户端的通信(这是必然的),然后发送给客户端当前的音频列表公客户端选择,之后根据k客户端的选择给多个客户端传输相应mp3文件的数据,同时,客户端进行实时地音频解码并播放。 关于libmad开源mp3音频解码库的使用,见上一篇博客吧。。。。 在服务器程序这一
原创
953阅读
0评论
0点赞
发布博客于 4 年前

关于libmad开源mp3音频解码库的使用

MAD(libmad)是一个开源的高精度MPEG音频解码库。libmad提供24-bit的PCM输出,完全定点计算。使用libmad提供的一系列API可以实现MP3文件的解码。 这里仅介绍这个库的相关使用方法。 1,首先下载libmad的源码包 libmad-0.15.0b.tar.gz并解压 2.在解压出来的目录下编译规则文件Makefile, ./comfigure -prefix /usr
原创
10020阅读
0评论
4点赞
发布博客于 4 年前

linux socket的多线程编成来实现多个客户端的连接

在socket的网络编程中常常采用多线程的方法来进行与多个客户端的通信,使服务器与多个客户端的通信并发、并行地进行。相比于多进程,多线程的好处是共用一块内存空间,下面我们来看一个简单的例子,就是多个客户端将字符串发送给服务器,服务器再将字符串反转后回复给客户端 服务器 server.c #include <stdio.h> #include <string.h>
原创
11415阅读
3评论
4点赞
发布博客于 4 年前

linux下用多线程实现socket服务器和客户端的异步通信

前面介绍了用select函数来实现socket的异步收发数据,但是select函数也有一些缺陷,要使socket能持续地通信,select必须不停地检测,这样进程就会一直阻塞在这里,限制了功能的扩展,这里我们用多线程的方式,另创建两个线程用来发送/接收数据,即可解决这个问题,代码如下: 服务器 server.c #include <stdio.h> #include <std
转载
3924阅读
1评论
1点赞
发布博客于 4 年前

linux 下socket 服务器和客户端异步通信

我们知道用socket进行通信时,发送数据和接收数据所使用的recv/send函数会阻塞进程,只有收到或发送数据后才能返回值,导致是socket通信只能实现服务器和客户端交替收发数据,而使用select可以很好地解决这个问题。诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件
原创
2585阅读
0评论
0点赞
发布博客于 4 年前

关于fgets从键盘读取,直接跳过键盘输入的问题

今天写程序用到了fgets函数,想直接从键盘输入数据到数组,前面使用了scanf输入int类型的数字,没想到执行到fgets直接不等我输入数据就跳过了,在网上查了一下,原来是stdin缓存没有清除干净的缘故: C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输
转载
3047阅读
1评论
3点赞
发布博客于 4 年前

C语言 链表的创建,以及节点的增加和删除

第一次写博客,如有错误还请指正………… 今天下午倒腾了一下c语言的链表,感觉链表就是一个小型的数据库,用于简单的小程序的用户信息存储和管理还是很方便的。 下面为方便起见,以学生信息为例: 链表采用了动态分配的办法为一个结构分配内存空间。每一次分配一块空间可用来存放一个学生的数据,我们可称之为一个结点。有多少个学生就应该申请分配多少块内存空间,也就是说要建立多少个结点。当然用结构
原创
7042阅读
0评论
12点赞
发布博客于 4 年前