LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 600|回复: 4

请问怎么可以得到一个sock的buffer ?

[复制链接]
发表于 2004-4-26 21:36:18 | 显示全部楼层 |阅读模式
这是不能实现的程序:

  1. #include <sys/types.h>
  2. #include <unistd.h>
  3. #include <sys/ioctl.h>
  4. #include <sys/socket.h>
  5. int
  6. main(void)
  7. {
  8.      int   fd,n;
  9.      int   res;
  10.      char buff[4];
  11.      if((fd=socket(AF_INET,SOCK_STREAM,0)) <0) {
  12.            perror("sock error");
  13.            exit(1);
  14.      }
  15.      if((n=ioctl(fd,FIONREAD,&res))<0) {
  16.            perror("ioctl error");
  17.            exit(1);
  18.      }
  19.      /* do some tink */
  20. }
复制代码

应该怎么做呢?:help
发表于 2004-4-27 07:50:31 | 显示全部楼层
用netfilter很容易搞定,呵呵
发表于 2004-4-27 10:51:41 | 显示全部楼层
我bc哦,这ioctl和buffer有什么关系?
我只知道套接字的buffer的大小是可以用getsocketopt和setsocketopt来进行获取和设置的
8知道u说的是这个意思么?
 楼主| 发表于 2004-4-27 15:18:59 | 显示全部楼层
用ioctl()取得socket的缓冲区在中文版的<unix network programming 1>>说有。P176
 楼主| 发表于 2004-4-27 15:55:14 | 显示全部楼层
ioctl(sock,FIONREAD,&to_read);

                        buff=(char *)malloc(to_read);

                        get=read(sock,buff,to_read);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表