- 博客(20)
- 收藏
- 关注
转载 UDP SOCKET编程中的connect()
UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样。 一个插口有几个属性,其中包括协议,本地地址/端口,目的地址/端口。 对于UDP来说: socket()函数建立一个插口; bind()函数指明了本地地址/端口(包括ADDR_ANY, 通配所有本地网络接口); connect()可以
2010-01-31 21:12:00 11245
转载 SOCKET编程中,select()函数的作用
select()在SOCKET编程中还是比较重要的,可是对于初学SOCKET的人来说都不太爱用select()写程序,他们只是习惯写诸如 conncet()、accept()、recv()或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用select()
2010-01-30 23:17:00 2155
转载 SOCKET编程之INADDR_ANY
INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上来表示不确定地址,或“所有地址”,“任意地址”。一般来说,在各个系统中均定义成为0值。 例如:MontiVista Linux中在/usr/inlcude/netinet/in.h中定义为: /*Address to accept any incoming messages.*/ #defi
2010-01-30 01:03:00 1131
转载 默认实参
类中成员函数如有默认实参,最好能将默认实参写在成员函数的声明中。具体原因如下: 一. 函数的实现与默认参数无关,所以,没必要让默认实参出现在函数的定义体中。 二. 函数的默认参数可能会要改动,修改函数的声明比修改函数的定义更方便。 (以上两点中提及的函数不仅仅局限于类的成员函数) 三. 现有如下情况: 有三个文件,分别为a.h, a.
2010-01-30 00:26:00 663
转载 fd_set用法
select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fe_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。 多端口复用函数select在调
2010-01-29 14:26:00 1154
转载 Berkeley套接字
Berkeley套接字应用程序接口(也作BSD套接字应用程序接口)包括了一个用C语言写成的应用程序开发库,主要用于实现进程间通讯的功能,在计算机网络通讯方面被广泛使用。 过程如下: 原语含义SOCKET创建一个新的通信端点BIND将一个本地地址关联到一个套接字上
2010-01-29 00:28:00 1385
转载 关于errno
当Linux中的C api函数发生异常时,一般会将errno变量(需#include )赋值给一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法可以方便的得到错误信息。 (1) void p
2010-01-28 01:47:00 928
转载 套接字中的数据转换(大端模式/小端模式)
通常使用的有两种数据类型:短型(两个字节)和长型(四个字节)。 下面介绍的这些转换函数对于这两类的无符号整型变量都可以正确的转换。 如果你想将一个短型数据从主机字节顺序转换到网络字节顺序的话,有这样一个函数htnos: 它是以"h”开头的,代表“主机”; 紧跟着它的是"to",代表“转换到”; 然后是"n",代表“网络”; 最
2010-01-27 23:03:00 3643
转载 广播域/冲突域
冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧(注:所有被发送的帧,而不只是广播帧);广播域:网络中能接收任一设备发出的广播帧的所有设备的集合;冲突域是基于第一层(物理层)广播域是基于第二层(数据链路层)广播域就是说如果站点发出一个广播信号后能接收到这个信号的范围。通常来说一个局域网就是一个广播域。冲突域:一个站点向另一个站点发出信号(没说是广播信号)。除目的站点外
2010-01-18 01:40:00 918
转载 路由器/集线器/交换机
首先说HUB,也就是集线器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同,他们都是第二层的(数据链路层)设备。但是两者在性能上有区别:集线器采用的是共享带宽的工作方式,而交换机是独享带宽。即:如果10台机器接在一个10M的HUB上,分到每台机器的只有1M,但交换机因为有自己的CPU和RAM可以实现存储转发等功能,不共享带宽,即每
2010-01-17 01:14:00 802
转载 网关/路由器
顾名思义,网关(Gateway)就是一个网络连接到另一个网络“关口”。 在OSI中,网关有两种:一种是面向连接的网关,一种是无连接的网关。当两个子网之间有一定距离时,往往将一个网关分成两半,中间用一条链路连接起来,称之为半网关。 按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均是指TCP/IP协议下的网关。 那
2010-01-12 22:49:00 1433
转载 地址解析协议——ARP
1. 什么是ARP? 英文原义:Address Resolution Protocol 中文释义:地址解析协议(RFC-826) 是一个位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析成对应的MAC地址。 局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的
2010-01-12 00:22:00 4628
转载 C/S 和 B/S 的基本概念
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种scrīpt语言(VBscrīpt、Javascrīp
2010-01-11 00:38:00 4684
转载 关于fork()函数的工作机制
在看Linux源代码时,遇到的fork()函数实在是太奇怪了,调用一次,竟然会对子进程和父进程分别返回两个不同的值,令人费解,一个函数怎么会有两个返回值呢。从网上搜索终于找到了答案。如下: fork()并不是进行进程切换,而是复制一个当前进程。举例来说,假如初始进程号为100,当进入fork()系统调用后,操作系统就把100号进程一模一样地复制出来一个新的进程101号。所谓一模一
2010-01-10 22:06:00 1588 1
转载 Linux fork()函数学习
在 UNIX 系统中,用户创建一个新进程的唯一方法就是调用系统调用 fork。调 用 fork 的进程称为父进程,而新创建的进程叫做子进程。系统调用的语法格式: pid = fork(); 在从系统调用 fork 中返回时,两个进程除了返回值 pid 不同外,具有完全一样的用户级上下文。在子进程中,pid 的值为零。在系统启动时由核心内 部地创建的进程0是唯一不通
2010-01-08 14:41:00 1224
转载 线程安全——strtok VS strtok_r
#includechar *strtok(char* restrict s1,const char* restrict s2); strtok将字符串分隔成标记。对strtok的第一次调用与后继的调用不同。第一次调用的时候,将要解析的字符串地址作为第一个参数s1,传递进去。在后继的解析同一个字符串的调用中,用NULL作为第一个参数。 对strtok的每个后继调用都返回下一个标记的起
2010-01-07 22:50:00 12107
转载 什么是AddressPrefix
今天学到一个新术语——AddressPrefix,记录下来,嘿嘿:-) IP address prefixes are patterns which match the first n binary bits of an IP address. The standard syntax is to write the prefix bits that must match in do
2010-01-07 14:07:00 2210
转载 strtok()函数深入分析
strtok()这个函数大家都应该碰到过,但好像总有些问题, 这里着重讲下它 首先看下MSDN上的解释:char *strtok( char *strToken, const char *strDelimit ); ParametersstrToken String containing token or tokens. strDelimit Set of delimiter
2010-01-07 00:21:00 1076
转载 文字常量区与栈区分析
由于网上介绍内存分配的比较简单 自己顺便写了一份由于刚接触C 若有问题 请指出 欢迎讨论编译环境为VS2005 编译为C文件。。。首先看下下面这段: int main(){ char *name = "fengkewei"; char name1[] = "fengkewei"; char *name2 = "fengkewei"; char *nam
2010-01-06 22:47:00 5857
转载 什么叫做伪函数,或是函数对象?它的优点是什么?
笔者这里用一个简单的代码片段来说明伪函数的实现和用法,及其优点。代码示例如下: class Abs { public: int operator()(int num)const; //这个操作符的重载是实现伪函数的关键 Abs(); void setIsOpponent(bool isOpponent); pr
2010-01-05 22:10:00 7815
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人