网络编程项目改错

1.传输数据用结构体封装,自己定义协议,可以解决粘包问题。

2.用tcp传输数据时,发送send(),定义发送的大小时,strlen之后,tcp会自己加上协议,会接受到乱码,应该用sizeof,然后每次发送时,都发送这次传输的数据长度 

3.从键盘输入使用scanf接受时,每次都要用getchar()来吃回车,不然缓冲区中会有数据,下次的scanf会读取到垃圾字符 

4.程序执行多次,或没接收到想要的数据,多半是缓冲区内有数据,可以用先定义一个很大的数组,然后recv,把缓冲区内的数据吃了,通过返回值来判断吃到了多少,再去找是哪里的数据发多了 

5.结构体用于发送接受,两边的成员变量的顺序要是一样的,以结构体为单位发送接受,赋值时是按成员顺序接受的,两边结构体的成员顺序不一样,接受到的数据就会错开。 

6.封装函数,需要注意结构,发送与接受要在同一一个层次。 

7.数据库的使用,增删改调用sqlite3_exec函数就可以了,sql语句的改变使用sprintf来拼接,查找比较难,sqlite3_get_table函数可以看成有四个返回值,查询结果的行数,列数,查询结果的首地址,和错误号。没查询到时,行数为0,列数为表头的列数,resultp的首地址指向表头 

8.epoll实现的I\O多路复用,原理上是单通道分时间片的通     讯,不能同时接受两个进程发送的数据,只能一个数据处理完才能处理另外一个数据。

9.全局变量初始化只能为常量,赋值,修改在函数内部进行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值