linux_网络编程
beginning1126
这个作者很懒,什么都没留下…
展开
-
select read write
[cpp] view plaincopy"color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px; text-align: left; ">"font-size:14px; ">1. 服务器"color: rgb(51, 51, 51); font-family:转载 2012-10-10 17:47:05 · 2081 阅读 · 0 评论 -
11 原始套接字
原始套接口(RAW SOCKET) 原始套接口提供三种TCP和UDP套接口不提供的功能:1). 可以读写ICMPv4, IGMPv4和ICMPv6分组. 例如Ping和Traceroute程序就是利用ICMP分组2). 可以读写特殊的IPv4数据报, 内核不处理这些数据报IPv4协议字段3). 使用IP_HDRINCL选项可以构造自己IPv4头部. 可以用这原创 2013-11-02 16:46:56 · 1006 阅读 · 0 评论 -
struct tcphdr详解
sk_buff->tcphdr/usr/src/linux-2.6.19/include/linux/tcp.hstruct tcphdr { __be16 source; __be16 dest; __be32 seq; __be32 ack_seq;#if defined(__LITTLE_ENDIAN_BITFIELD)转载 2013-11-02 17:17:01 · 8186 阅读 · 0 评论 -
struct iphdr详解
/usr/src/linux-2.6.19/include/linux/ip.hstruct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) __u8 ihl:4, version:4;#elif defined (__BIG_ENDIAN_BITFIELD) __u8 versio转载 2013-11-02 17:14:45 · 36803 阅读 · 1 评论 -
struct epoll_event
这两天在看项目的数据结构定义及关系,遇到一些关于socket的知识点,还有一些C++的知识点,下面总结下:1. struct epoll_event 结构体epoll_event被用于注册所感兴趣的事件和回传所发生待处理的事件,定义如下: typedef union epoll_data { void *ptr; int fd转载 2013-08-01 15:53:46 · 1222 阅读 · 1 评论 -
10 UNIX域协议
UNIX域套接字地址结构#include struct sockaddr_un { sa_family sun_family; char sun_path[104];}套接字函数1、路径最好是绝对路径,不要相对路径;2、和connect调用中指定的路径名必须是一个当前绑定在某个打开的UNIX域套接字上的路径名,而且他们的套接字类型(字节流或数据报)也必须一原创 2013-05-07 16:14:19 · 2040 阅读 · 0 评论 -
9 高级IO函数
套接字超时1、调用alarm,指定超时时产生SIGALRM信号,捕捉该信号。注意信号处理在多线程上处理有困难,建议在单进程、单线程的程序使用信号2、通过select,通过设置select内置超时。3、使用SO_RCVTIMEO和SO_SNDTIMEO套接字选项。1、2中方法可以用于各种描述符,不仅仅套接字描述符,而第3种只能用于套接字;第1种可以用于connect函数,2、3不能;原创 2013-05-06 14:52:24 · 815 阅读 · 0 评论 -
8 基本UDP套接字编程
典型UDP客户端和服务端结构与代码调用顺序:recvfrom和sendto函数:验证接收到的响应:对于UDP,其不像TCP是基于有连接的,这样就有一个问题,sendto之后,recvfrom回来的数据可能不是从sendto目的地址回复的消息,这样就需要验证接收到的响应,提供如下方法供参考:比较sendto目的地址和recvfrom接收地址,查看是原创 2013-03-29 17:22:56 · 3359 阅读 · 0 评论 -
linux select I/O共享服务端
花了两天时间,终于写好了一个select I/O复用服务端,真不容易,拿出来和大伙分享一下,O(∩_∩)O~/****************************************************************************** Copyright (C), 2001-2011, DCN Co., Ltd. ***********原创 2012-10-10 17:44:02 · 1839 阅读 · 0 评论 -
3 套接字编程简介
2012年刚刚把tcp/ip详解看完,受益匪浅,新年伊始,开始研究UNP,由于前两章和tcp/ip详解的内容差不多,就没在此总结,直接从第3章开始研究,欢迎有类似爱好的朋友留言一起交流学习,ok,let's go。。。。第3章 套接字编程简介3.1 IPV4套接字地址结构先来看下ipv4套接字地址结构,其定义在首先,这里最常用的3个字段sin_fam原创 2013-02-21 17:01:20 · 877 阅读 · 0 评论 -
4 基本TCP套接字编程
4 基本TCP套接字编程4.1 socket 函数此函数用于返回socket句柄,family、type、protocol其值如下图所示,其中protocol常常被置为0,系统会为我们选择默认值。4.2 connet 函数此函数用于TCP 客户端和服务器建立连接时用的,并且对于客户端(无论udp还是tcp,都不需要调用原创 2013-02-24 16:59:06 · 1302 阅读 · 0 评论 -
5 TCP客户端/服务器程序实例
经过半天到努力,终于写好一个采用fork子进程方法编写到tcp服务器,直接上代码。tcp server:/* socksrv.c*/#include #include #include #include #include #include /* for struct sockaddr_in*/#include #include #define SV原创 2013-03-16 15:13:45 · 3912 阅读 · 0 评论 -
7 套接字选项
#include int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);通用套接字选项:原创 2013-03-23 16:37:32 · 1089 阅读 · 0 评论 -
epool 详细使用说明
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2012-10-18 18:02:33 · 2859 阅读 · 0 评论 -
socket select
作一个tcp的服务程序,同时可能有大量的客户端连上来,希望分别记住各个socket谁有数据过来,就读出来,放到一个请求队列--这些事情用一个线程完成另外有一个结果队列,如果结果里包含了socket的编号,用一个线程专门:取出来按编号找回原来发送者socket,发回给原来的客户端还有一个就是处理线程(池),它取出请求队列里的一个请求,进行处理,把处理结果放入结果队列转载 2012-10-10 17:49:08 · 899 阅读 · 0 评论 -
socket select example
使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组。2. 首先生成一个叫sock_fd的socket描述符,用于监听端口。3. 将sock_fd和数转载 2012-10-10 17:48:35 · 1563 阅读 · 0 评论 -
socket send 和 recv详解
send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端转载 2012-10-10 17:47:27 · 685 阅读 · 0 评论 -
6 I/O复用:select and poll函数
在讨论select和poll之前,让我们一起来整体观察一下5种I/O模型阻塞式I/O模型:非阻塞式I/O模型:I/O复用模型:信号驱动式模型:异步I/O模型:5种模型比较:总结:这5种模型,第1种最常见,也最简单,一般简单的单进程单线程客户端可以采用。第2种、第3种常常用在复杂的客户端或服务器上原创 2013-03-17 14:20:39 · 1714 阅读 · 0 评论