网络编程
文章平均质量分 64
Season_hangzhou
这个作者很懒,什么都没留下…
展开
-
非阻塞recvfrom和connect的设置
非阻塞recvfrom的设置 int iMode = 1; //0:阻塞 ioctlsocket(socketc,FIONBIO, (u_long FAR*) &iMode);//非阻塞设置 rs=recvfrom (socketc,rbuf,sizeof(rbuf),0,(SOCKADDR*)&addr,&len);int ioctlsocket (转载 2013-02-28 15:32:38 · 1151 阅读 · 0 评论 -
epoll使用详解
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __转载 2014-03-20 16:36:46 · 522 阅读 · 0 评论 -
Linux系统下处理 broken pipe的问题
在主线程中输入:转载 2014-09-19 17:44:15 · 4100 阅读 · 0 评论 -
epoll_create, epoll_ctl和epoll_wait
NAME epoll - I/O event notification facility SYNOPSIS #include DEscrīptION epoll is a variant of poll(2) that can be used either as Edge or Level Triggered转载 2015-01-08 16:52:04 · 769 阅读 · 0 评论 -
解决在epoll中accept接收端口会漏处理的问题. 直到新的socket消息到达,epoll_wait才响应去接收socket端口数据的问题
在用epoll的边缘触发模式中,发现socket接收有异常,有时会出现新的socket连接到底,但是需要有新的数据到底时,epoll_wait才响应去接收数据这个问题。原因分析:epoll的边缘触发模式下,同一端口可读时,epoll_wait只会提示一次。在accept中,当2个端口同时到达时,只会响应一次。这时就要用 while等循环函数去接收消息和接收accept响应,一般接收消息原创 2015-01-08 15:57:12 · 2339 阅读 · 1 评论 -
TCP/IP协议栈概述及各层包头分析
一、摘要 对之前几篇博文涉及到的网络通信协议进行分析,概述出TCP/IP的协议栈模型,最后根据实例对各层包头进行分析。 二、标准TCP/IP协议栈模型 标准TCP/IP协议是用于计算机通信的一组协议,通常被称为TCP/IP协议栈,以它为基础组建的互联网是目前国际上规模最大的计算机网络。正因为互联网的广泛应用,使得TCP/IP成为了事实上的网络标准。1、O转载 2014-12-12 16:51:21 · 1057 阅读 · 0 评论 -
Linux网络编程socket错误分析
Linux网络编程socket错误分析 socket错误码: EINTR: 4阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。如果recv的返回值为0转载 2015-03-26 15:36:45 · 1016 阅读 · 0 评论 -
TCP选项之SO_RCVLOWAT和SO_SNDLOWAT
每个套接口都有一个接收低潮限度和一个发送低潮限度。 接收低潮限度:对于TCP套接口而言,接收缓冲区中的数据必须达到规定数量,内核才通知进程“可读”。比如触发select或者epoll,返回“套接口可读”。 发送低潮限度:对于TCP套接口而言,和接收低潮限度一个道理。 理解接收低潮限度:如果应用程序没有调用recv()去读取socket的接受缓冲区的数据,则接受缓冲区数据将注一直保存转载 2015-03-25 16:21:21 · 1644 阅读 · 0 评论 -
shutdown和close详解
在Linux socket关闭连接的方法有两种分别是shutdown和close,首先看一下shutdown的定义#includeint shutdown(int sockfd,int how);how的方式有三种分别是SHUT_RD(0):关闭sockfd上的读功能,此选项将不允许sockfd进行读操作。SHUT_WR(1):关闭sockfd的写功能,此选转载 2015-09-10 11:13:07 · 1540 阅读 · 0 评论 -
poll使用
poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这转载 2014-03-18 18:05:05 · 663 阅读 · 0 评论 -
Epoll模型详解
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后 首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在 我用的2.6.15-25-386内核中,该值是1024,搜转载 2014-03-13 19:46:31 · 979 阅读 · 0 评论 -
linux下检测网卡与网线连通状态
1、用C代码实现检测网卡是否插上网线#include // IFF_RUNNING#include #include #include #include int main(){ if(check_nic("eth0") == 0) printf("detect ok./n"); else printf("d转载 2013-03-18 09:57:30 · 2267 阅读 · 0 评论 -
基于http协议的C语言客户端代码
转载者注:网上原文件有个小bug,下面贴的是已修复后的代码 /******* http客户端程序 httpclient.c ************/#include #include #include #include #include #include #include #include #include #include #include转载 2013-03-20 20:48:23 · 2176 阅读 · 1 评论 -
长网站 转换为 短网址 的原理
短网址简介短网址(Short URL) ,顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。算法原理算法一1)将长网址md5生成32位签名串,分为4段, 每段8个字节;2)对这四段循环处理, 取8个字节, 将他看成转载 2013-03-19 18:16:22 · 2233 阅读 · 0 评论 -
struct ifreq结构体与ip,子网掩码,网关等信息
一、涉及的知识点1.struct ifreq { char ifr_name[IFNAMSIZ]; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr;转载 2013-05-09 10:26:59 · 1382 阅读 · 0 评论 -
linux 下查看网卡工作速率
Ethtool是用于查询及设置网卡参数的命令。概要:ethtool ethX //查询ethX网口基本设置ethtool –h //显示ethtool的命令帮助(help)ethtool –i ethX //查询ethX网口的相关信息ethtool –d ethX //查询ethX网口注册性信息ethtool –r ethX //重置ethX网口到自适应模式ethtoo转载 2013-05-09 11:39:53 · 4228 阅读 · 0 评论 -
TCP——_SYN、ACK_、FIN、RST、PSH、URG_详解
三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1. (B) --> [SYN] --> (A) 假如服务器A和客户机B通讯.当A要和B通信时,B首先向A发一个SYN (Synchronize)标记的包,告诉A请求建立连接.注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources)转载 2013-06-24 14:21:12 · 8241 阅读 · 0 评论 -
WIN XP下pppoe服务器的搭建与使用
一、获取软件http://download.csdn.net/detail/lj20040431/5974365 二、安装pppoe驱动协议 1、右击 “网上邻居” -----> 选择“属性”,右击 “本地连接”(本地待用的以太网卡连接)2、点击 “安装”,选择 “协议”,再点击 “添加”,在弹出的窗口中点击“从磁盘安装” 3、在弹出的窗口中点击“浏览”转载 2013-08-19 14:12:40 · 10867 阅读 · 0 评论 -
linux网络编程之-----多播(组播)编程(转)
什么是多播 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。 多播,也称为“组播”,将局域网中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅转载 2014-03-05 16:13:42 · 1081 阅读 · 0 评论 -
shell脚本助你在linux下实时查看单网卡流量
#!/bin/bash while [ "1" ] do eth=$1 RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}') TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}') sleep 1 RXnext=$(c转载 2015-09-23 15:54:39 · 4264 阅读 · 0 评论