自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

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

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

2017-07-06 10:25:52 343

原创 linux下 socket的多人聊天室

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

2017-06-25 00:15:14 10307 6

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

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

2017-06-24 23:55:14 1276

原创 关于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

2017-06-24 23:03:29 12722

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

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

2017-06-24 12:00:39 13883 3

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

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

2017-06-23 23:00:30 5011 2

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

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

2017-06-23 22:25:33 3805

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

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

2017-06-21 16:59:19 4893 2

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

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

2017-06-20 20:26:22 15701 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除