TCP连接+数据库项目之零碎知识点

服务器(绑定数据库)和客户端建立连接及传输需要建立的注意点!

1、如果要发送结构体中的数据,那么struct中不能使用char*或者string类,因为char*本质上是指针,而指针是通过操作地址来查找数据的,所以服务器接收到的数据只有4个字节长(因为在32为系统中指针大小为4);而string类,服务器会不知道接收的数据大小为多少,会报错!

2、char*转为string :        stringstr;

                                              str ="hello";

        

                                              char s[10];

                                              strcpy(s,str.c_str());//str.c_str() 是string转换成char*类型

     string转为char*: string str;

                str.c_str;

3、将读取到的sql_row放到string字符串中,因为string有自动拼接的特性

                 result = mysql_store_result(&myCont);//获取结果集

                 sql_row =mysql_fetch_row(result);//获取本行数据

                 string str;

                 for (int i = 0; i< 7; i++)

                 {

                           str +=sql_row[i];//将读取到的数据全部放入string字符串

                 }

4、要记得适当对字符串进行清零!否则容易信息读取错误或者直接段错误!

4、服务器和客户端之间收发数据追求效率,如果是发送多次数据,和一次发送一个很长的字符串(字符串当中有分隔符,可以用来在客户端端进行解封,根据分隔符将一个一个的单词送给结构体,在进行集中处理)

怎么加分隔符?while (sql_row =mysql_fetch_row(result));//获取本行数据

{

                            stringstr;

                            for(int i = 0; i < 7; i++)

                            {

                                   str+= sql_row[i];//将读取到的数据全部放入string字符串

str +=”  ”;

                            }

                            str+= "\n";

}

5、全局变量:一般来讲,除了1、类(eg:Books book)这种需要在很多函数中需要调用的,如果传的不是引用和指针,一般不会修改其值,而如果想要修改其值,则传引用,一旦传了引用,说明自己有意识地要修改,不会发生随意修改,即在自己还没有意识的情况下修改他的值!2、数据库指定变量,不需要修改的,可以直接放在.h文件内,和main文件关联,那么都可引用。而如果只是返回值,只是局部的需要调用,则使用局部变量,即每次需要用的时候都在函数内再次定义,他会自动释放,不存在随意被修改的情况!

总的来说:不能随意的使用全局变量!

6、形参和实参!

7、如果在1.h中定义了结构体Info,然后在对应的1.c文件中定义了Infodata,如果在main.c文件中也定义了Info data,则很有可能会发生重定义!

8、string、const char*、 char* 、char[]四者类型转化。

http://blog.csdn.net/rongrongyaofeiqi/article/details/52442169

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值