Linux应用程序开发中的线程池与MySQL综合应用

1.实验目的

安装MySQL数据库,并在数据库中创建‘用户表’,存储至少3条‘用户信息’;

(2)服务器端创建线程池,响应客户端发送的连接请求(请求中包含‘用户信息’中的id或者学 ),并将查询到的用户数据返回给客户端;

(3)客户端向服务器端发送连接请求(请求中包含‘用户信息’中的id或者学 ),与服务器端建立通信连接,并把服务器端返回的完整‘用户信息’展示在终端上;

(4)至少启动3个客户端,并与服务器端建立连接,可以通过启动3个‘终端’来模拟3个客户端。

2.实验内容

2.1  linux文件解压缩应用

使用  tar  命令解压,方法如下:

将.tgz文件解压在当前目录:

tar zxvf  MY_NAME.tgz

 

将.tar.gz文件解压在当前目录:

tar zxvf  MY_NAME.tar.gz

tar -xvf file.tar //解压 tar包

1.vi/vim介绍

①vi是Visual Interface的缩写,即 可视化接口

②vim是vi iMprove的缩写,即 vi的增强版(具有语法着色功能)

2.vim模式使用说明

①三种模式

   命令模式(默认):刚进入vim的时候,默认就是 命令模式,可以复制行,删除行等。

   输入模式:可以输入内容。

②模式转换

   命令模式→输入模式:

i:在当前光标所在字符的前面,转为输入模式

I:在当前光标所在行的行首转换为输入模式

a:在当前光标所在字符的后面,转为输入模式

A:在光标所在行的行尾,转换为输入模式

o:在当前光标所在行的下方,新建一行,并转为输入模式

O:在当前光标所在行的上方,新建一行,并转为输入模式

s:删除光标所在字符

r:替换光标处字符

   输入模式→命令模式

ESC键

   命令模式→末行模式

     输入:即可 转为末行模式

 末行模式-操作

末行模式→命令模式

ESC键    

3.关闭文件

  末行模式下: 

w:保存

q:退出

wq 或 x:保存退出,wq 和 x 都是保存退出

q!:强制退出

w!:强制保存,管理员才有权限

  命令模式下:

ZZ:保存并退出

2.3  MySQL数据库软件的安装、配置及调试

1.检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步使用yum安装时会 错:

# yum list installed | grep mysql   //查看依赖

# yum -y remove mysql-libs.i686  //删除依赖

2.从mysql的官 下载mysql57-community-release-el6-5.noarch.rpm(注意这里的el6-5即适配RHEL6.5的版本,如果下载了其它版本后面的安装过程中可能会 错):

#wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

3.安装第一步下载的rpm文件:

#yum install mysql-community-release-el6-5.noarch.rpm

4.使用yum安装mysql:

#yum install mysql-community-server

5.启动mysql服务:

#service mysqld start

查看root密码:

 # grep “password” /var/log/mysqld.log

现在必须立刻修改密码,不然会 错:

mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);

6.修改字符集为UTF-8:

#vim /etc/my.cnf

在[mysqld]部分添加:

character-set-server=utf8

7.特殊情况

编译开发时 错,无法找到lib文件时:

在64位系统中,/usr/lib/mysql/下的相关库文件无法标识,需要将

/usr/lib64/mysql 下的库来做个软链接

# ln -sf /usr/lib64/mysql/libmysqlclient.so /usr/lib/mysql/libmysqlclient.so

# ln -sf /usr/lib64/mysql/libmysqlclient.a /usr/lib/mysql/libmysqlclient.a  

还需要使用yum 安装mysql 支持库mysql-devel

#yum install mysql-devel

2.4  Linux 络通信配置

1.ifcfg-ethn 络配置文件

 

所有的 络接口配置文件均存放在/etc/sysconfig/network-scripts目录下

如系统的第一个以太 接口的配置文件为:

/etc/sysconfig/network-scripts/ifcfg-eth0

2.netconfig 络配置工具

netconfig 运行在字符界面下,可以方便的进行 络配置。

使用netconfig完成 络配置后,只是修改了相应的 络配置文件,并没有使新的属性生效,所以要立即重新启动 络服务。

执行命令:

#service network restart //重启 络服务

netconfig默认配置 卡eth0,若需要配置其他 卡,则:

#netconfig –device eth1 //配置指定的 卡

2.5  基于线程池的客户端与服务端 络通信

经典的在同一台主机上两个进程或线程之间的通信通过以下三种方法

管道通信(Pipes)

消息队列(Message queues)

共享内存通信(Shared memory)

3.实验环境

3.1操作系统平台

实验及相关操作采用在Windows平台中安装Linux虚拟机的方式进行,所需软件如下:

VMware Workstation虚拟机软件;

CentOS6操作系统。

3.2所需软件

自带终端软件;

gcc,g++等开发工具

MySQL5.6版本。

 

4实验步骤

4.1  数据库环境搭建

4.1.1安装MySQL数据库

1.检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步使用yum安装时会 错:

# yum list installed | grep mysql   //查看依赖

# yum -y remove mysql-libs.i686  //删除依赖

#yum install mysql-community-release-el6-5.noarch.rpm

 

2.使用yum安装mysql:

#yum install mysql-community-server

3.启动mysql服务:

#service mysqld start

查看root密码:

 # grep “password” /var/log/mysqld.log

现在必须立刻修改密码,不然会 错:

mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);

4.特殊情况

编译开发时 错,无法找到lib文件时:

在64位系统中,/usr/lib/mysql/下的相关库文件无法标识,需要将

/usr/lib64/mysql 下的库来做个软链接

# ln -sf /usr/lib64/mysql/libmysqlclient.so /usr/lib/mysql/libmysqlclient.so

# ln -sf /usr/lib64/mysql/libmysqlclient.a /usr/lib/mysql/libmysqlclient.a  

还需要使用yum 安装mysql 支持库mysql-devel

#yum search mysql

#yum install mysql-devel

4.1.2数据库插入用户信息

1.创建数据库(database)

create database db_test;

2.创建user用户表

create table user( 
    -> id SMALLINT UNSIGNED not null auto_increment,
    ->  name varchar(20) not null, 
    -> stu_no int not null, 
    -> grade varchar(10) , 
    -> class varchar(10), 
    -> course varchar(10),
    -> score int, 
    -> PRIMARY KEY (id) );

3.插入用户数据

mysql> insert into user(id,name,stu_no,grade,class,course,score)
    -> VALUES(1001,’sfx’,2016110628,’3′,’5′,’linux’,’99’);
Query OK, 1 row affected (0.01 sec)

mysql> insert into user(id,name,stu_no,grade,class,course,score)
    -> VALUES(1002,’sfx1′,2016110629,’3′,’5′,’linux’,’97’);
Query OK, 1 row affected (0.01 sec)

mysql> insert into user(id,name,stu_no,grade,class,course,score)
    -> VALUES(1003,’sfx2′,2016110630,’3′,’5′,’linux’,’98’);

 

4.2  客户端编程

vim tcp_client_fork.cpp

4.3  服务端编程

vim tcp_server_fork.cpp

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月22日
下一篇 2019年5月22日

相关推荐