文章 2015-04-16 来自:开发者社区

Linux网络编程之原始套接字-ping协议实现

1.概述 PING协议是用来检验本地主机与远程主机是否连接,发送的是ICMP ECHO_REQUEST包。普通的套接字是基于TCP或者是UDP的,无法发送ICMP包,所以必须用原始套接字来实现。PING协议的客户端类型值为 8,代码值为0,表示请求。而PING协议的响应端类型值为0,代码值也为0,表示应答. 以太网数据部分的最小值为46字节,而IP首部占20个字节,ICMP的首部占8个字节,...

文章 2015-04-16 来自:开发者社区

Linux网络编程之广播

1.概念 前面介绍的TCP,UDP都是单播方式,即一对一.而广播是一台主机向局域网内的所有主机发送数据。这时,同一网段的所有主机都能接收到数据。发送广播包的步骤大致如下: (1)确定一个发送广播的接口,如eth0 (2)确定广播的地址,通过ioctl函数,请求码设置为SIOCGIFBRDADDR得到广播的地址 (3)使用这个广播地址进行广播 由于TCP协议是端到端的协议,在通信之前,必须建立连接....

文章 2015-04-16 来自:开发者社区

Linux网络编程之多播

1.概念 单播是用于两个主机之间传送数据,广播是一个主机对局域网内的所有主机发送数据。而多播,又称为组播,它是对一组特定的主机通信。将网络上同一类型 业务逻辑上分组,只和组内的成员通信,其它主机没有加入组则不能通信。与单播相同的是,组播允许在Internet上通信,而广播只是同一局域网内的主机 通信。组播地址是特定的,D类地址用于组播,即244.0.0.0到239.255.255.255. 并.....

文章 2015-03-09 来自:开发者社区

Linux网络编程之epoll

epoll多路复用非阻塞模型 epoll多路复用技术相比select和poll更加高效,相比select和poll每次都轮询O(n),epoll每次返回k个有事件发生的fd,所以是O(k)的复杂度,或者说O(1)。epoll分为水平触发(LT)和垂直触发(ET),这两种方式下对fd的读写是很不一样的,这也是epoll编程的难点,现在很多网络库都是优先提供epoll作为多路复用的,如libev/.....

文章 2015-03-04 来自:开发者社区

Linux网络编程之简单总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feilengcui008/article/details/44067587 网络编程是一个很大也很有趣的话题,要写好一个高性能并且bug少的服务端或者客户端程序还是挺不容易的,而且往往涉及到进程线程管理/内存...

文章 2015-03-03 来自:开发者社区

Linux网络编程之poll

poll多路复用非阻塞模型 the poll is like select,it uses struct pollfd to replace the read_set,write_set,error_set of select,and it has no limitation of the fd number like select. poll与select很类似,但是用struct pol...

文章 2015-03-03 来自:开发者社区

Linux网络编程之select

使用select多路复用技术的非阻塞模型 select多路复用通常具有很好的跨平台性,也能提供不错的并发性能,但是在通常情况下有最大监听文件描述符的限制(通常1024),如果不需要达到C10K这种前端高性能服务器的要求,采用select+nonblocking的方式能降低编程的难度 用到的接口 FD_SETSIZE; FD_SET(<#fd#>, <#fdsetp#&.....

文章 2015-03-03 来自:开发者社区

Linux网络编程之多线程

多线程模型 在多线程模型下,注意共享数据的同步,mutex/condition_variable/rw_lock等的使用,local thread storage的使用,另外,可以搭配线程池处理异步计算任务。在C++11中的线程库中已经提供了future相关的工具,合理地使用线程模型减少资源的同时,能获得不错的性能 //thread server #include <stdio.h&...

文章 2015-03-03 来自:开发者社区

Linux网络编程之多进程

多进程模型 多进程模型下,注意如何在进程之间通信以及孤儿进程和僵尸进程的处理,可以外配上进程池作为计算任务/异步任务的处理。 //fork server #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <...

文章 2014-09-09 来自:开发者社区

嵌入式,Linux网络编程

linux网络编程通过套接字(socket)实现,socket是一种文件描述符 socket三种类型:流式套接字SOCK_STREAM,提供可靠的、面向连接的通讯流,使用TCP协议,保证通信可靠性和顺序性                 &...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。