`
hxix29hxix
  • 浏览: 13153 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

[转]Linux Socket编程(不限Linux)

 
阅读更多

[转]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
分享到:
评论

相关推荐

    详解Linux Socket编程(不限Linux)

    本篇文章主要介绍了Linux Socket编程,网络之间的通信全靠Socket,详细的介绍了Socket,有兴趣的同学可以了解一下。

    C语言socket/smtp发送邮件,支持附件,支持windows和linux

    /* * 使用规则: * 可以发送带附件的邮件,附件大小限制由发送方服务器而定,暂未测试具体为多少MB * 附件可以是多个 ...支持windows系统,linux系统。 上一版本的更新版。 详细情况件压缩包的readme

    Linux高性能服务器编程

    内容简介《Linux高性能服务器编程》是Linux服务器编程领域的经典著作,由资深Linux软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能Linux服务器应用的方法、...

    socket网络编程-epoll-水平触发和边缘触发源码

    socket网络编程-epoll-水平触发和边缘触发源码。 (1)I/O多路复用技术用于监控多个TCP连接上的数据收发,而epoll就是一种在Linux上使用的I/O多路复用并支持高并发的典型技术。传统的select、poll也是I/O多路复用...

    linux网路编程 中文 23M 版

    第2 章Linux编程环境....................................................................................................14 2.1 Linux环境下的编辑器................................................. 14 ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供...

    UDP_TCP_Socket_Programming:CS 3251编程分配1. Java中的UDP和TCP套接字

    普拉纳夫·谢诺(Pranav Shenoy) CS 3251 A-计算机网络CS 3251编程分配1. Java中的#UDP和TCP套接字。 跑步说明 有两个文件夹:UDP_Implementation和TCP_Implementation。 您可以在各自的文件夹中找到每种实现的Java...

    FTP实验报告.docx

    FTP实验报告全文共2页,当前为第1页。... 实验总结 通过本次试验,我理解了整个FTP协议的细节和工作流程,对Linux系统下Socket编程的过程有了较多的了解,为以后网络编程的学习打下了良好的基础。 FTP实验报告

    新版Android开发教程.rar

    程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...

    C 网络服务开发套件0.5.0

    CWSS: C Web Services Server... 前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;

    C 网络服务开发套件

    CWSS: C Web Services Server... 前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;

    C++网络开发框架0.5.7

    CWSS: C++ Web Services Server ...前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;

    C++网络服务开发套件0.5.3

    前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;

    C++网络服务开发套件0.5.5

    前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;

    C++网络服务开发套件0.5.6

    前端: 运行环境, 开发语言不限; 支持TCP, UDP和HTTP通讯能力即可; 可以根据项目需要开发自己的客户端库; <br>e. 安全 具客户端帐号验证功能, 支持帐号直接配置和可编程管理二种验证方式;

    一个进程池的服务器程序

    由于listenfd是在fork之前就有的,所以所有子进程都可以访问到,不需用到“进程间文件描述符传递”问题; 4,子进程每accept到一个请求都告诉父进程,父进程把请求数加1;子进程没完成一个请求,父进程把请求数减1;...

    水木清华站∶Java版精华区 含jsp及js等集合.chm

    [目录]Linux下的Java 24. [目录]以前介绍的资源 25. [目录]Java编程工具 30. [目录]更多下载相关 3. [目录]JavaScript 1. [目录]javascript 书籍 2. [目录]javascript 书籍(2) ...

    jsr80 java 访问 usb

    这两个项目都开发出了 Linux 开发人员可以使用的包,尽管它们都还很不完善。这两个项目也都开始试图向其他操作系统上的 Java 应用程序提供对 USB 设备的访问,尽管它们都还没有开发出可以使用的包(参阅 参考资料 中...

    PHP程序开发范例宝典III

    实例013 Linux下实现PHP支持Socket 20 实例014 Linux下实现PHP支持mysqli扩展技术 21 实例015 开机自动启动Apache服务 21 实例016 开机自动启动MySQL服务 22 实例017 Linux下发布“读者之家”网站 22 1.3...

Global site tag (gtag.js) - Google Analytics