首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux下原始套接字打印有关问题

2012-04-04 
linux下原始套接字打印问题#include stdio.h#include unistd.h#include sys/socket.h#include sys/

linux下原始套接字打印问题
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <linux/if_ether.h>
#include <linux/in.h>
#define BUFFER_MAX 2048

int main(int argc,char *argv[])
{
int sock,nread,proto;
char buff[BUFFER_MAX];
char *ethheader,*ipheader;
if((sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))) < 0)
  {
  fprintf(stdout, "create socket error\n");
  exit(0);
  }
while(1)
  {
nread=recvfrom(sock,buff,2048,0,NULL,NULL);
printf("the num of packets %d",nread);
printf("whole pack %s",buff); //我想用这句打印出整个包的数据,为什么不行呢?
  }
return 0;
}

谢谢哪位帮忙!



[解决办法]
呵呵,printf 打印字符串的哦,要求以 '\0' 结尾,貌似你收到网络数据包不一定符合这个要求,
所以,你应该循环打印每个字节,或按协议格式打印...
[解决办法]
nread是多少?你先在buff的尾部加个'\0'看看.

热点排行