Linux socket编程(三) 简单的多线程聊天室

要用到多线程以及线程的读写锁,之前写的Socket类、ServerSocket要做相应的改变

因为服务器端要维持着一个存储客户端Socket信息到数据结构,当多个线程同时访问这个结构时,要做同步处理,所以要在适当的时候加上读锁或写锁。

继续阅读 »

Linux socket编程(二) 服务器与客户端的通信

上一篇写了对套接字操作的封装,这一节使用已封装好的Socket类实现服务器与客户端的通信(Socket的定义见上篇Socket.h)

继续阅读 »

Linux socket编程(一) 对套接字操作的封装

以前写的,现在回顾一下:

下面是对socket操作的封装,因为在Linux下写中文到了windows里面会乱码,所以注释用英文来写,有空再查下解决方法吧 继续阅读 »

epoll的一个demo,备忘(epoll+线程池)

epoll的一个demo,备忘(epoll+线程池)

继续阅读 »

GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)

为了适应现在越来越流行的64位系统,经常需要将代码分别编译为32位版和64位版。其次,除了需要生成debug版用于开发测试外,还需要生成 release版用于发布。本文介绍了如何利用makefile条件编译来生成这些版本,而且不仅兼容Linux下的GCC,还支持MinGW、TDM- GCC等Windows下的GCC编译器。

继续阅读 »

c++中的 extern “C”

比如说你用C 开发了一个DLL 库,为了能够让C ++语言也能够调用你的DLL 输出(Export) 的函数,你需要用extern “C” 来强制编译器不要修改你的函数名。

继续阅读 »

gcc g++选用静态库动态库的参数

静态链接libA动态链接libB

yum下载依赖rpm包

平常我们使用yum的时候总是希望能够将需要的包保存一份以备后用,但是系统自带的yum默认安装后会自动删除掉安装包,现在我们有两种方法来实现本地保存安装包

继续阅读 »

误删 libc.so.6的解决方法

今天不小心把libc.so.6给删除了。
原系统是这样的: libc.so.6 -> lib-2.6.1.so
本想新建立一个软链接,指向 lib-2.8.so
没想到 ln 命令不能用了。 原来linux 很多shell命令都离不开 libc.so.6。 真惨了。 幸好没有关linux.
从网上一查, 找到解决方案:
#LD_PRELOAD=/lib/libc-2.6.1.so ln -s /lib/libc-2.6.1.so lib/libc.so.6

就可以了

解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14′ not found问题

我遇到这个问题的时候是在连接库的时候出现的问题,而且不是在编译的时候出现的,实在运行的时候才 报错,出现这种问题就是因为编译库的编译器和编译当前程序的编译器版本是不一样的,在具体一点就是因为,当前程序的编译器的版本是比较低的,只要升级一下就可以了。可以用如下命令查看一下当前GCC版本:
继续阅读 »