非阻塞方式程序设计介绍非阻塞方式的操作与阻塞方式的操作最大的不同点是函数的调用立刻返回,不管数据是否成功读取或者成功写入。使用fcntl()将套接字文件描述符按照如下的代码进行设置后,可以进行非阻塞的编程:
fcntl(s, F_SETFL, O_NONBLOCK);
其中的s是套接字文件描述符,使用F_SETFL命令将套接字s设置为非阻塞方式后,再进行读写操作就可以马上返回了。非阻塞程序设计的...
分类:
系统相关 时间:
2015-09-11 12:44:32
阅读次数:
186
下面的一幅图是取自《UNIX网络编程卷一》,这个简单的C/S程序的框架
Service端程序#include
#include
#include
#include
#include
#include
int main()
{
int sfp,n...
分类:
系统相关 时间:
2015-08-29 15:24:28
阅读次数:
209
网络数据能够正确到达用户并被用户接收是进行网络数据传输的基本目的, 网络数据的接受和发送有很多种方案,例如:直接发送和接收,通过向量发送和接收,使用消息发送和接收等。本篇文章主要介绍常用的IO函数以及用法,如:最常用的read()/write()函数,和其他标准的套接字专用函数recv()/send(),readv()/writev(),recvmsg()/sendmsg()。
各个函数原型以及介...
分类:
系统相关 时间:
2015-08-28 17:39:28
阅读次数:
269
一、系统调用和应用编程接口
在讨论网络通信之前,
首先明确两个概念:系统调用(system call) 和 应用编程接口(Application
Programming Interface,API)。
操作系统使用 系统调用 机制来实现 在应用程序 与 操作系统 之间进行控制权传递。
当某个应用进程启动了系统调用时,控制权就从应用程序传递给操作系统。操作系统执行某个内部...
分类:
系统相关 时间:
2015-08-28 00:52:55
阅读次数:
228
为了网络编程的便捷,系统提供了一组用于查询协议的值以及名称的函数,本篇文章主要介绍协议族函数的使用方法和注意事项。
下面用一段代码介绍函数的使用方法:#include
#include /* 显示协议的项目 */
void display_protocol(struct protoent *pt)
{
int i = 0;
if(pt){...
分类:
系统相关 时间:
2015-08-27 16:48:36
阅读次数:
250
套接字描述符和通用文件描述符在形式上没有区别,那么如何判断一个文件描述符是否是套接字描述符呢?下面我们就简单的自定义一个函数issockettype,用于套接字描述符判定。#include
#include
#include
#include
#include
#include...
分类:
系统相关 时间:
2015-08-27 13:37:23
阅读次数:
156
在日常生活中,人们往往知道主机的域名而不知道主机的IP地址,而socket的API均基于IP地址,所以需要使用DNS域名解析服务器进行解析。
那么首先简单介绍一下DNS的原理,DNS服务器系统是按树形的结构构造,顶级域名服务器下分多个二级域名服务器,二级域名服务器下面又分多个下级域名服务器,每个服务器都下辖了一些主机,如图所示:
那么一个主机是如何查询一个域名的IP地址呢?首先需要想本地的域...
分类:
系统相关 时间:
2015-08-27 13:26:29
阅读次数:
203
本文属于转载,稍有改动,以利于学习。(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序...
分类:
系统相关 时间:
2015-08-26 17:17:36
阅读次数:
262
一:不安全的(不可重入性)inet_xxx()函数族由于计算机理解的IP都是以二进制形式保存的,那么在网络程序设计中经常会需要字符串IP和二进制IP的转换,linux系统有一组要用于网络地址转换的函数,如下: #include
#include
#include ...
分类:
系统相关 时间:
2015-08-25 16:53:06
阅读次数:
276