网络编程
文章平均质量分 69
nitweihong
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一个用eXosip实现的UAC和UAS的例子
经过一段时间的学习,对sip总算有了一点认识,在学习过程中,遇到了太多的问题,郁闷过,惆怅过,但是一咬牙,还是过来了。令我感动的是,在网上遇到一些很热心的朋友,不厌其烦地给我以解惑,感谢他们,尤其是友善的大狗,呵呵,希望将来有一天他能看到这篇文章。 我是利用eXosip协议栈进行开发的,网上有一篇,写的不错,但是好像有一些问题,而对于初学者来说,能拿到一个好的例子,对sip的理解可以到达事半功倍转载 2012-01-31 10:18:36 · 342 阅读 · 0 评论 -
linux中select()函数分析
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式原创 2012-04-12 08:58:56 · 218 阅读 · 0 评论 -
eXosip2研究笔记
1.全局变量eXosip的初始化 全局变量eXosip是eXosip2库工作的核心,它通过osip成员变量与osip库中的osip对应起来,整个协议栈的实现,都是在eXosip的基础上运行的。首先我们看看eXosip_t结构体。 struct eXosip_t { struct eXtl_protocol *eXtl; char transport[10];原创 2012-02-13 15:57:24 · 1403 阅读 · 0 评论 -
exosip转载代码
// YouTooDlg.cpp : implementation file // #include "stdafx.h" #include "YouToo.h" #include "YouTooDlg.h" #define WAIT_TIMER 200 //事件检测时间间隔ms #define REG_TIMER 30*1000 //注册时间间隔ms转载 2012-02-13 10:58:50 · 889 阅读 · 0 评论 -
Linux系统调用之send/sendto/sendmsg函数解析
【send/sendto/sendmsg系统调用】 功能描述: 发送消息。send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。 用法: #include #in原创 2012-02-09 09:06:14 · 453 阅读 · 0 评论 -
详解网络嗅探工具的原理|Sniffer|Wireshark
Sniffer(嗅探器)是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。Snifffer可以作为能够捕获网络报文的设备,ISS为Sniffer这样定义:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。 Sniffer的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,原创 2012-02-06 11:55:44 · 2378 阅读 · 0 评论 -
libpcap使用总结!
libpcap使用总结! libpcap是一个开发sniffer的工具包。pcap:packetcapture! libpcap的数据类型定义: structpcap_addr:网卡地址描述 { pcap_addr* next; sockaddr* addr; sockaddr* netmask; sockaddr*broadaddr; sockaddr*dstaddr; };原创 2012-02-06 11:54:48 · 261 阅读 · 0 评论 -
STUN NAT探测步骤
STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还 将继续在ANT穿透中占有一席之地。 STUN的探测过程需要有一个公网IP的STUN server,在NAT后面的UAC必须和此server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比如NAT外网 IP,PORT转载 2011-12-28 10:53:19 · 445 阅读 · 0 评论 -
How to Configure SIP and NAT
For all the technology behind Voice over IP (VoIP), you'd expect that it would work on every network, but this unfortunately isn't the case. Network Address Translation (NAT) is a common practice us翻译 2011-12-28 11:05:51 · 596 阅读 · 0 评论 -
私有IP地址
私有 IP 地址是指内部网络或主机的IP 地址,公有IP 地址是指在因特网上全球唯一的IP 地址。 RFC 1918 为私有网络预留出了三个IP 地址块,如下: A 类:10.0.0.0~10.255.255.255 B 类:172.16.0.0~172.31.255.255 C 类:192.168.0.0~192.168.255.255 上述三个范围内的地址不会在因特网上被分配,因原创 2011-12-29 14:23:34 · 326 阅读 · 0 评论 -
Peer-to-Peer Communication Across Network Address Translators
Abstract: Network Address Translation (NAT) causes well-known difficulties for peer-to-peer (P2P) communication, since the peers involved may not be reachable at any globally valid IP address. Severa转载 2011-12-28 11:20:13 · 295 阅读 · 0 评论 -
SIP协议产生NAT穿透问题以及提出解决的方法
1、大致有4种类型的NAT。 a) Full Cone 完全圆锥体 b) restricted cone 受限制的圆锥体 c) port restricted 端口受限制的圆锥体 d) symmetric 对称的 其中a,b,c 也称作非对称的NAT。 2、SIP终端在NAT后面,其工作有可能出现问题。原因是SIP信令走的路径,和媒体流走的路径不一样。 3、Full Cone转载 2011-12-28 10:55:19 · 453 阅读 · 0 评论 -
用osip2+eXosip2+ortp+mediastreamer实现的linux简易软电话源代码
编译命令: gcc -losip2 -leXosip2 -lmediastreamer -lpthread -o my_exosip_phone my_exosip_phone.c my_exosip_phone.c如下: #include #include #include #include #include #include #incl原创 2012-02-01 10:40:48 · 1052 阅读 · 1 评论 -
DHCP工作原理
DHCP的工作原理 视乎客户端是否第一次登录网路﹐DHCP的工作形式会有所不同。 第一次登录的时候﹕ 1. 寻找Server。当DHCP客户端第一次登录网路的时候﹐也就是客户发现本机上没有任何IP资料设定﹐它会向网路发出一个DHCPDISCOVER封 包。因为客户端还不知道自己属于哪一个网路﹐所以封包的来源地址会为0.0.0.0﹐而目的地址则为255.255.255.25转载 2011-11-18 16:34:20 · 202 阅读 · 0 评论 -
sockaddr与sockaddr_in结构体简介
struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */ }; sa_family是地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF原创 2012-01-30 15:55:08 · 196 阅读 · 0 评论 -
struct sockaddr与struct sockaddr_in的区别和联系
最近在看网络编程部分内容,刚开始接触结构体struct sockaddr和struct sockaddr_in的时候,极其迷惑,在网上翻了不少帖子,慢慢有那么点清晰了。呵呵,现在结合一篇网友的文章,对这两个结构体进行解读。 在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下: typedef unsigned s原创 2012-01-30 15:54:24 · 223 阅读 · 0 评论 -
SIP组播代码
组播客户端代码如下: #include #include #include #include #include #include #define BUFLEN 255 int main(int argc, char **argv) { struct sockaddr_in peeraddr, myaddr; int sockfd; c原创 2012-01-30 15:26:27 · 582 阅读 · 0 评论 -
gethostbyname用法
使用这个东西,首先要包含2个头文件: #include #include struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.com","wpc"等等。 传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。 struct hostent {原创 2012-01-30 15:21:31 · 221 阅读 · 0 评论 -
PING命令应用实例三则
Ping命令是我们日常网管工作中使用频率最高的工具之一,主是用来测试网络连接的。在实际平时解决网络故障的过程中,一般应该遵循“先软后硬”的步骤来进行。其中“软”就是指使用Ping命令大概判断出网络故障位置。今天我们就向大家介绍Ping命令的三个典型应用。 一、验证网卡工作状态 Ping最简单的一个应用就是验证网卡工作状态是否正常,这也是电脑出现不能上网等故障最简单的判断转载 2012-01-10 11:51:54 · 246 阅读 · 0 评论 -
子网掩码的算法
ip地址是32位的二进制数值,用于在tcp/ip通讯协议中标记每台计算机的地址。通常我们使用点式十进制来表示,如192.168.0.5等等。 每个ip地址又可分为两部分。即网络号部分和主机号部分:网络号表示其所属的网络段编号,主机号则表示该网段中该主机的地址编号。按照网络规模的大小,ip地址可以分为a、b、c、d、e五类,其中a、b、c类是三种主要的类型地址,d类专供多目传送用的多目地址,e转载 2012-01-10 11:47:36 · 234 阅读 · 0 评论 -
HUB 交换机 路由器的区别
首先说HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同。但是两者在性能上有区别:集线器采用的式共享带宽的工作方式,而交换机是独享带宽。这样在机器很多或数据量很大时,两者将会有比较明显的。而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径 ,可以说一般情况下个人用户需求不大。路由器原创 2012-01-09 09:05:35 · 265 阅读 · 0 评论 -
流控制传输协议与TCP协议的比较
随着网络多媒体业务的增多,传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)的局限性日益明显,为此互联网工程任务组(Internet Engineering Task Force,IEFT)的信令传输工作组(SIGTRAN)提出了一种新的面向多媒体通信的流控制传输协议(Stream Contro转载 2011-11-18 16:27:02 · 242 阅读 · 0 评论 -
TCP协议深入理解
TCP协议在能够发送数据之前就建立起了“连接”。要实现这个连接,启动TCP连接的那一方首先将发送一个SYN数据包。这只是一个不包含数据的数据包,然后,打开SYN标记。如果另一方同时在它收到SYN标记的端口通话,它将发回一个SYN+ACK:SYN和ACK标志位都被打开,并将ACK(确认)编号字段设定为刚收到的那个数据包的顺序号字段的值。接下来, 连接发起方为了表示收到了这个SYN+ACK信息,会向发转载 2011-11-18 16:25:28 · 167 阅读 · 0 评论 -
http错误代码含义
view plainprint? http错误代码含义: "100" : Continue "101" : witching Protocols "200" : OK "201" : Created "202" : Accepted "203" : Non-Authoritative Information "204" : N转载 2011-11-18 10:57:56 · 185 阅读 · 0 评论 -
SIP处理应答状态码
1xx = 通知性应答 100 正在尝试 180 正在拨打 181 正被转接 182 正在排队 183 通话进展 2xx = 成功应答 200 OK 202 被接受:用于转介 3xx = 转接应答 300 多项选择 301 被永久迁移 302 被暂时迁移 305 使用代理服务器 380 替代服务 4xx = 呼叫失败 40转载 2011-12-27 10:01:09 · 361 阅读 · 0 评论 -
Linux下Select用法
由于时间关系,先将我用的代码写到这里,稍后解释。这里服务器端有两个可能阻塞的描述符:一个是网络的,另一个是来自终端的,用select可以保证无论是客户端还是终端给它发送数据,它都可以处理,当然还有更高效率的实现方式,就是poll和epoll,网上有它们查找过程的不同。这里不赘述。 18 #include 19 #include 20 #include in.h> 21 #incl转载 2011-11-29 09:44:31 · 217 阅读 · 0 评论
分享