当前位置:  技术问答>linux和unix

read()函数的一个问题 急!!!!

    来源: 互联网  发布时间:2015-07-22

    本文导语:  我现在正在看一个网络服务器的服务端(socket编程),中间收数据是这样的:    char buff[3];    int lenf=read(cfd,buff,1024);//cfd是已经定义好的套接字    这样对吗?buff定义不是只有三个字节吗?可是接受的最大长度...

我现在正在看一个网络服务器的服务端(socket编程),中间收数据是这样的:
   char buff[3];
   int lenf=read(cfd,buff,1024);//cfd是已经定义好的套接字
   这样对吗?buff定义不是只有三个字节吗?可是接受的最大长度是1024啊
望各位赐教!!

|
这样是有问题的。

|
长度一定要严格定义成3+1,否则超出buffer的范围会有不可预料的后果

|
我可以明确的告诉你,这段程序编译运行可能是没有问题,但是如果系统在分配内存的时候,buff后是分派的一个指针,那里就死定了.c是不对边界进行检查的,所以一定要自己设置好边界,这里可能只是将buff当作char*使用,而不是char buff[3],使用吧.

|
no problem

|
buf[1024];比较好。

|
编译可以通过吗?如果可以通过,就绝对会出现不可预知的错误,因为你犯了一个内存越界的错误.
比如(为内存地址):
buff: 0x00ffcc10
      0x00ffcc11
      0x00ffcc12
这是buff的内存地址,如果写入1024,将会将0x00ffcc12~0x00ffd011的数据写入到cfd中,可能这段地址被使用,或者没有使用(运气好),或者正在使用(多线程或者多进程),那是你就只有等死了.呵呵.小议.

|
好像是不对,按照搂主的意思,这段代码是不是因为所接收的报文在报文头部用3个字符表示报文长度,所以先读取3个字节,再根据这3个字节的值来读取报文体呢?

|
to LLeexhiling:
什么“明确”,“可能”,“但是”,“如果”,“就死定了”。
不要乱说。

to shuimuyu
>> memcpy(recevicedDatap,buff+1,8);
>> recevicedDatap[8]='';
buff哪来的8个字节

漏洞百出

    
 
 

您可能感兴趣的文章:

  • 关于tty函数的read函数的小问题
  • 请问 : read, 与recv 两个函数有什么区别啊?
  • CAT命令读取设备文件,驱动read函数被反复调用,为什么?
  • read函数读取文件时如何一行一行的读取,请指教!
  • 关于read()函数
  • 请教各位可以用read函数读取.wav音频文件数据吗
  • 函数read出错时,错误代码的含义?
  • 急了急了:串口read函数问题!
  • Linux下read函数默认到底是阻塞的还是非阻塞的?
  • 求教网络编程read函数的问题
  • read、write和close对应到C++库是什么函数
  • Linux编程:有关read()函数的问题
  • linux串口读取read函数始终返回值为1,没有返回读到的字符数
  • int read(int,char*, sszie_t)函数返回的各种值分别表示什么?
  • Linux下怎么用read或recv函数完全接收socket发来的数据?
  • 关于recvfrom和read函数的接收速率问题
  • 初学者小问:read(file,buf,size)函数在读取文件时,file会不会自动增加?
  • 怎么样以非阻塞的方式从管道中读取数据?因为我用read函数时,如果管道没有数据就会阻塞住???
  • 请教read()和write()函数的问题
  • RTC驱动测试函数read_time怎么写?
  • 系统启动问题(read block from filesystem resulted in short read!)在线等!!!
  • socket read返回问题
  • cshell脚本中read的问题
  • 关于epoll ET模式read的一些问题
  • read 和write问题!
  • 关于read()的问题
  • read 赋值问题
  • read 读取 非常奇怪 而且有难度的问题
  • shell编程的问题,关于read的
  • linux 多线程sys_read同步问题
  • 急问!!!!BufferReader.read中的off问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 read():读取字条符
  • 请教: read一个socket, read返回需要多长时间?
  • java命名空间javax.swing类progressmonitorinputstream的类成员方法: read定义及介绍
  • read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket?
  • java命名空间java.sql接口connection的类成员方法: transaction_read_uncommitted定义及介绍
  • if( (n=Readline( sockfd,line,MAXLINE) )==0)为什么服务器接收到客户FIN时,Read返回的是0。,既然FIN被读出来了,为什么Read返回的是0
  • java命名空间java.io类objectinputstream的类成员方法: readfully定义及介绍
  • 非阻塞打开设备文件,如果1秒read不到数据,想让read退出如何做?
  • java命名空间java.io类linenumberreader的类成员方法: read定义及介绍
  • linux 下的read命令重定向
  • java命名空间java.io接口objectinput的类成员方法: read定义及介绍
  • 我的模块的READ没有被调用
  • java命名空间java.io类objectinputstream的类成员方法: read定义及介绍
  • 关于shell read命令
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_write定义及介绍
  • 新手请教:while read中末尾的重定向表示什么意思?
  • java命名空间java.io类filterinputstream的类成员方法: read定义及介绍
  • 为什么客户端断开连接后,read的返回值是0?
  • java命名空间java.text类attributedcharacteriterator.attribute的类成员方法: reading定义及介绍
  • read/write 和 fread/fwrite 有什么区别
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_only定义及介绍
  • MAXDATASIZE read close 的声明在哪个头文件里头???


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3