创建socket

UNIX/Linux的一个哲学是:所有东西都是文件。socket也不例外,它就是可读、可写、可控制、可关闭的文件描述符。下面的socket系统调用可创建一个socket:

#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);

domain参数告诉系统使用哪个底层协议族。对TCP/IP协议族而言,该参数应该设置为PF_ INET (Protocol Family of Internet,用于IPv4)或PF_ INET6 (用于IPv6);对于UNIX本地域协议族而言,该参数应该设置为PF_ UNIX。关于socket系统调用支持的所有协议族,请读者自己参考其man手册。

type参数指定服务类型。服务类型主要有SOCK_STREAM服务(流服务)和SOCK_UGRAM (数据报)服务。对TCP/IP协议族而言,其值取SOCK_ STREAM表示传输层使用TCP协议,取SOCK_ DGRAM表示传输层使用UDP协议。

值得指出的是,自Linux 内核版本2.6.17起,type参数可以接受上述服务类型与下面两个重要的标志相与的值:SOCK_NONBLOCK和SOCK_CLOEXEC。它们分别表示将新创建的socket设为非阻塞的,以及用fork调用创建子进程时在子进程中关闭该socket。在内核版本2.6.17之前的Linux中,文件描述符的这两个属性都需要使用额外的系统调用(比如
fcntl)来设置。

protocol参数是在前两个参数构成的协议集合下,再选择一个具体的协议。不过这个值通常都是唯一的(前两个参数已经完全决定了它的值)。几乎在所有情况下,我们都应该把它设置为0,表示使用默认协议。

socket系统调用成功时返回一个socket文件描述符,失败则返回-1并设置ermo。

5.2创建socket相关推荐

  1. [转|整理]翻译:使用.net3.5的缓存池和SocketAsyncEventArgs类创建socket服务器

    原文地址:http://www.cnblogs.com/onlytiancai/archive/2008/06/25/1229321.html http://www.cnblogs.com/killk ...

  2. 缓存服务器syns to listen sockets drop导致创建socket失败

    问题描述: 最近遇到了一个syn丢包的情况,当系统磁盘.网络.cpu都无压力的时候,系统莫名其妙出现"sync to listen sockets drop"问题:无论带宽是10M ...

  3. C# Socket系列二 简单的创建 socket 通信

    看了系列一 我们开启了对socket tcp的监听状态,那么这一章我们来讲解怎么创建socket的通信代码 我新建一个类 TSocketBase public abstract class TSock ...

  4. Java面试题17 牛客 下面哪个选项正确创建socket连接?

    Java面试题17 牛客 下面哪个选项正确创建socket连接? Socket s = new Socket(8080); Socket s = new Socket("192.168.1. ...

  5. python创建socket对象_python---一个简单的socket

    server端: 1 创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) #family参数代表地址家族,可为AF_IN ...

  6. 创建Socket【Socket编程4】

    java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端.这是两个封装得非常好的类,使用很方便.其构造方法如下: Socket(InetA ...

  7. 使用PHP创建SOCKET服务

    最近好奇,接触接触PHP的socket编程,发现还是很好玩儿的.下面贴出来demo源码跟大家分享 Server.php <?php/*** PHP Socket Server* */ //确保客 ...

  8. Linux内核网络协议栈4-创建socket(2)

    接上篇"创建socket" 一文: 5.分配sock结构: 本文中的例子会调用inet_family_ops.create方法即inet_create方法完成socket的创建工作 ...

  9. Linux内核网络协议栈3-创建socket(1)

    1.示例及函数入口: 1) 示例代码如下: C代码   int server_sockfd = socket(AF_INET, SOCK_STREAM, 0); 2) 入口: net/Socket.c ...

最新文章

  1. 技术图文:如何利用C# 实现 Kruskal 最小生成树算法?
  2. jquery-1.11.3.js与jquery-1.11.3.min.js区别
  3. javadrawstring设置字符大小_LaTex学术写作——编辑文档格式 设置论文标题与摘要...
  4. HPU暑期第五次积分赛 F - 辞树的质因数分解
  5. 对提高squid命中率的一些研究
  6. python入门常用代码
  7. wait和notify使用例子
  8. Nhibernate3.3.3 GA使用初探
  9. 分享一个 GIFControl 控件
  10. js中判断数组中是否包含某元素的方法
  11. 【信号检测】认知无线电的信号检测算法matlab仿真:能量检测,循环平稳检测,匹配滤波检测
  12. CAD交互绘制虚线(网页版)
  13. 鲸鱼吞塑料袋解决之道:人类合作和可持续发展报告
  14. Win10 如何显示所有任务栏图标,不进行隐藏
  15. php 10到50的随机数,【单选题】php中以下能输出1到10之间的随机数的是( )
  16. 买服务器不做网站需要备案吗,买服务器需要备案吗
  17. 全球最顶级的管理模式全在这了
  18. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第10章:ORGANIZING FILES
  19. QQ好友辅助验证不要信
  20. 塔望食品品牌策划:盘点食品产业变化4大关键词及3大发展趋势

热门文章

  1. java api教程_Java api 入门教程 之 JAVA的文件操作
  2. mongodb转mysql思路_脚本 将阿里云 mongodb数据转成mysql
  3. 华为ac控制器web配置手册_AC+AP组建无线网络,解决路由器没地方放,不美观
  4. c语言的课本答案,c语言课本试题答案
  5. dll中使用dialogbox_玩游戏丢失dll文件别着急 认识这些就妥了
  6. 大二第二学期周学习进度总结(十三)
  7. 理论篇-数理统计填坑篇
  8. 【分治】动态点分治 ([ZJOI2007]捉迷藏)
  9. 开发之没沟通误删客户数据库数据之找数据路
  10. [No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1