[转]Linux Socket编程(不限Linux)
2011年09月23日
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。――有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:
1、网络中进程之间如何通信?
2、Socket是什么?
3、socket的基本操作
3.1、socket()函数
3.2、bind()函数
3.3、listen()、connect()函数
3.4、accept()函数
3.5、read()、write()函数等
3.6、close()函数
4、socket中TCP的三次握手建立连接详解
5、socket中TCP的四次握手释放连接详解
6、一个例子(实践一下)
7、留下一个问题,欢迎大家回帖回答!!!1、网络中进程之间如何通信?本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类:
消息传递(管道、FIFO、消息队列)
同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)
共享内存(匿名的和具名的)
远程过程调用(Solaris门和Sun RPC)
但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。
使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD的套接字(socket)和UNIX System V的TLI(已经被淘汰),来实现网络进程之间的通信。就目前而言,几乎所有的应用程序都是采用socket,而现在又是网络时代,网络中进程通信是无处不在,这就是我为什么说“一切皆socket”。
2、什么是Socket?上面我们已经知道网络中的进程是通过socket来通信的,那什么是socket呢?socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open
发表评论
-
面试者自述
2012-01-20 10:17 651面试者自述 2010年07月20日 You should ... -
visual studio 2008下装CGAL
2012-01-20 10:17 1034visual studio 2008下装CGAL 2010年 ... -
tomcat 优化(转)
2012-01-20 10:17 452tomcat 优化(转) 2010年08 ... -
OGRE基础教程1
2012-01-20 10:17 816OGRE基础教程1 2011年06月 ... -
vs2008安装boost库
2012-01-20 10:17 976vs2008安装boost库 2010年06月10日 首 ... -
掌握这些电脑知识,你可以玩的很无耻
2012-01-19 15:18 558掌握这些电脑知识,你可以玩的很无耻 2011年09月05日 ... -
lamp升级
2012-01-19 15:18 504lamp升级 2011年08月23日 -- lamp ... -
硬盘知识大全(含主板、BIOS)
2012-01-19 15:18 905硬盘知识大全(含主板、 ... -
oracle错误一览表三
2012-01-19 15:18 985oracle错误一览表三 2011年02月15日 OR ... -
WinCE驱动开发问题精华集锦
2012-01-19 15:18 560WinCE驱动开发问题精华 ... -
常见电脑技术问题解决方法
2012-01-17 05:05 809常见电脑技术问题解决方法 2011年05月03日 问: ... -
计算机英语词汇大全(1)
2012-01-17 05:05 566计算机英语词汇大全(1) ... -
C#面试题集锦(你值得拥有!)
2012-01-17 05:05 752C#面试题集锦(你值得拥有!) 2011年04月22日 ... -
Struts2入门碰钉记
2012-01-16 03:56 723Struts2入门碰钉记 2010年 ... -
新Eclipse插件可以快速构建主流java框架
2012-01-16 03:56 681新Eclipse插件可以快速构建主流java框架 2010年 ... -
flex安装
2012-01-16 03:56 601flex安装 2011年03月30日 需要软件: a ... -
网站开发的几种软件的搭配
2012-01-16 03:56 729网站开发的几种软件的搭配 2009年07月14日 几种不 ... -
SSH2 手工配置(转)
2012-01-16 03:56 312SSH2 手工配置(转) 2010年 ...
相关推荐
本篇文章主要介绍了Linux Socket编程,网络之间的通信全靠Socket,详细的介绍了Socket,有兴趣的同学可以了解一下。
/* * 使用规则: * 可以发送带附件的邮件,附件大小限制由发送方服务器而定,暂未测试具体为多少MB * 附件可以是多个 ...支持windows系统,linux系统。 上一版本的更新版。 详细情况件压缩包的readme
内容简介《Linux高性能服务器编程》是Linux服务器编程领域的经典著作,由资深Linux软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能Linux服务器应用的方法、...
socket网络编程-epoll-水平触发和边缘触发源码。 (1)I/O多路复用技术用于监控多个TCP连接上的数据收发,而epoll就是一种在Linux上使用的I/O多路复用并支持高并发的典型技术。传统的select、poll也是I/O多路复用...
第2 章Linux编程环境....................................................................................................14 2.1 Linux环境下的编辑器................................................. 14 ...
文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供...
普拉纳夫·谢诺(Pranav Shenoy) CS 3251 A-计算机网络CS 3251编程分配1. Java中的#UDP和TCP套接字。 跑步说明 有两个文件夹:UDP_Implementation和TCP_Implementation。 您可以在各自的文件夹中找到每种实现的Java...
FTP实验报告全文共2页,当前为第1页。... 实验总结 通过本次试验,我理解了整个FTP协议的细节和工作流程,对Linux系统下Socket编程的过程有了较多的了解,为以后网络编程的学习打下了良好的基础。 FTP实验报告
程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...
CWSS: C Web Services Server... 前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;
CWSS: C Web Services Server... 前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;
CWSS: C++ Web Services Server ...前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;
前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;
前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;
前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; <br>e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;
由于listenfd是在fork之前就有的,所以所有子进程都可以访问到,不需用到“进程间文件描述符传递”问题; 4,子进程每accept到一个请求都告诉父进程,父进程把请求数加1;子进程没完成一个请求,父进程把请求数减1;...
[目录]Linux下的Java 24. [目录]以前介绍的资源 25. [目录]Java编程工具 30. [目录]更多下载相关 3. [目录]JavaScript 1. [目录]javascript 书籍 2. [目录]javascript 书籍(2) ...
这两个项目都开发出了 Linux 开发人员可以使用的包,尽管它们都还很不完善。这两个项目也都开始试图向其他操作系统上的 Java 应用程序提供对 USB 设备的访问,尽管它们都还没有开发出可以使用的包(参阅 参考资料 中...
实例013 Linux下实现PHP支持Socket 20 实例014 Linux下实现PHP支持mysqli扩展技术 21 实例015 开机自动启动Apache服务 21 实例016 开机自动启动MySQL服务 22 实例017 Linux下发布“读者之家”网站 22 1.3...