ChinaUnix.net
相关文章推荐:

linux 原始套接字

sock_raw原始套接编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket 1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包 2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))发送接收以太网数据帧 3.socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))过时了,不要用啊 理解一下SOCK_...

by icunow - Linux文档专区 - 2014-04-15 14:32:30 阅读(1588) 回复(4)

相关讨论

关于linux原始套接发送分片包的问题? 如题,在linux环境下,使用原始套接发送数据包, 如果是普通的小于1500节的TCP,UDP,ICMP数据包都没有问题, 但是如果是大于1500节,程序就会分片IP包,可是问题来了 IP分片的代码都是同一个函数,但是TCP,UDP协议只能够发出第一个分片包,余下的分片包就发不出来了, 而ICMP则没有这个问题,都能够发出来,并且可以收到对方的响应 分片包都是使用sendto发送,返回值都是对...

fragmentraw socket分片包原始套接字

by ucMIPS - Linux环境编程 - 2011-05-16 10:24:42 阅读(3598) 回复(5)

如题,谢谢 [ 本帖最后由 xiaodan1a 于 2008-5-16 17:07 编辑 ]

by xiaodan1a - Linux环境编程 - 2008-05-16 17:00:02 阅读(1413) 回复(0)

在调试unix网路编程的例子,内容如下: #include "unp.h" int main(int argc, char **argv) { int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SE...

by totopper - Linux环境编程 - 2012-08-04 11:41:38 阅读(3625) 回复(10)

有时候我们要控制套接的行为(如修改缓冲区的大小),这个时候我们就要控制套接 的 选项了. getsockopt 和setsockopt int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optl en) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen) level 指定控制套接的层次.可以取三种值: 1)SOL_SOCKET:通用套接选项. 2)IPPRO TO_IP:IP 选项. 3)IPPROTO_TCP:TCP 选项. o...

by fengyetang - Linux文档专区 - 2008-05-23 23:33:07 阅读(565) 回复(0)

服务器端 #include #include #include #include #include #include #include #include #include #include #define PORT 8888 #define MAXSIZE 1024 int main(int argc,char *argv[]) { int sockfd; char send[MAXSIZE]; char recv[MAXSIZE]; socklen_t len; struct sockaddr_in s...

by lantian0811 - C/C++ - 2010-12-07 08:36:04 阅读(1854) 回复(6)

RT,套接函数是C的,C++如何调用?直接调用还是要把这些函数先声明extern C?另外,可以直接包装在类里面做成员函数吗?

by lonerwolf - Linux新手园地 - 2010-09-21 16:23:49 阅读(983) 回复(0)

recv 和send recv 和send 函数提供了和read 和write 差不多的功能.不过它们提供 了第四个参数来控制 读写操作. int recv(int sockfd,void *buf,int len,int flags) int send(int sockfd,void *buf,int len,int flags) 前面的三个参数和read,write 一样,第四个参数可以是0 或者是以下的组合 | MSG_DONTROUTE | 不查找路由表 | | MSG_OOB | 接受或者发送带外数据 | | MSG_PEEK | 查看数据,并不从系统缓冲区移走数据 | | MSG_WAITALL ...

by fengyetang - Linux文档专区 - 2008-05-23 23:17:45 阅读(513) 回复(0)

struct timeval timeo = {3, 0}; retval = select(sockfd+1,&set, NULL,NULL,&timeo); 我在linux下用 ret=recvfrom(sockfd,recvpacket,sizeof(recvpacket),0,(struct sockaddr *)&from_addr6,&fromlen6); 来接收ICMPv6响应信息,但是超时问题一直没解决,上面两句也用到了,但是不知道所以然,请哪位解释一下!先谢过了

by panyuanyong - Linux环境编程 - 2008-01-02 08:53:57 阅读(1300) 回复(0)

linux网络编程中,套接选项是一个很重要的编程问题,当解决某些问题时我们可以考虑使用套接选项。会很好利用套接选项来编程可以提升你的网络编程水平!下面转载一篇很好的讲解套接选项so_reuseaddr的文章。 socket编程:SO_REUSEADDR例解 kevintz 2000-6-19 网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用。而 且很多网友在编写网络程序时也会...

by l.j.boboman - Linux文档专区 - 2007-11-21 16:59:50 阅读(708) 回复(0)

计算机数据存储有两种节优先顺序:高位节优先和低位节优先。Internet上数据以高位节优先顺 序在网络上传输,所以对于在内部是以低位节优先方式存储数据的机器,在Internet上传输数据时就需 要进行转换。 我们要讨论的第一个结构类型是:struct sockaddr,该类型是用来保存socket信息的:   struct sockaddr {    unsigned short sa_family; /* 地址族, AF_xxx */   char sa_data[14]; /* 14 节...

by l.j.boboman - Linux文档专区 - 2007-11-05 11:28:30 阅读(779) 回复(0)