Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1136335
  • 博文数量: 209
  • 博客积分: 4069
  • 博客等级: 上校
  • 技术积分: 2025
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-02 13:51
文章分类
文章存档

2011年(2)

2010年(4)

2009年(63)

2008年(140)

我的朋友

分类: 系统运维

2008-09-24 22:14:15

什么是socket?
你经常听到人们谈论着“socket”,或许你还不知道它的确切含义。现在让我告诉你:它是使用标准Unix文件描述符(filedescriptor) 和其它程序通讯的方式。什么?你也许听到一些Unix高手(hacker)这样说过:“呀,Unix中的一切就是文件!”那个家伙也许正在说到一个事 实:Unix程序在执行任何形式的I/O的时候,程序是在读或者写一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数。但是(注意后面的 话),这个文件可能是一个网络连接,FIFO,管道,终端,磁盘上的文件或者什么其它的东西。Unix中所有的东西就是文件!所以,你想和 Internet上别的程序通讯的时候,你将要使用到文件描述符。你必须理解刚才的话。现在你脑海中或许冒出这样的念头:“那么我从哪里得到网络通讯的文 件描述符呢?”,这个问题无论如何我都要回答:你利用系统调用socket(),它返回套接字描述符(socketdescriptor),然后你再通过 它来进行send()和recv()调用。“但是...”,你可能有很大的疑惑,“如果它是个文件描述符,那么为什么不用一般调用read()和 write()来进行套接字通讯?”简单的答案是:“你可以使用!”。详细的答案是:“你可以,但是使用send()和recv()让你更好的控制数据传 输。”存在这样一个情况:在我们的世界上,有很多种套接字。有DARPAInternet地址(Internet套接字),本地节点的路径名(Unix套 接字),CCITTX.25地址(你可以将X.25套接字完全忽略)。
阅读(1842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~