以TCP协议为例,UNIX的相关API

  

int socket(int domain , int type , int protocol);

  根据指定的地址族,数据类型,协议来分配一个socket的描述字以及所占用的资源。

  domain:协议族,常见的有AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE,其中AF_INET代表ipv4地址

  type:socket类型,常见的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等

  protocol:协议。常见的协议有IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等

  返回值:返回一个套接口描述符0 or 1 or 2,如果出错,则返回-1。

int bind(int sockfd , const struct sockaddr * addr , socklen_t addrlen);

  把一个地址族中的特定地址赋给socket

  sockfd:socket描述字,即是sock引用

  addr:要绑定给sockfd的协议地址

  addrlen:协议地址的长度

  通常服务器在启动时要绑定一个众所周知的IP地址和端口,用于提供服务,客户通过它就可以连接到服务器。但是客户端与之不同,客户端是在connect():时自动分配一个端口。这就是为什么客户没有调用bind();的操作而服务器在listen();前需要bind();的操作。

  

int listen(int sockfd , int backlog);

  监听socket

  sockfd:要监听的socket描述字

  backlog:相应socket可以排队的最大连接个数

int connect(int sockfd , const struct sockaddr *addr , socklen_t addrlen);

  连接某个socket

  sockfd:某个客户端的描述字

  addr:服务器的socket地址

  addrlen:socket地址的长度

int accept(int sockfd , const struct sockaddr *addr , socklen_t *addrlen);

  TCP服务器监听到用户请求后,调用accept();接收请求

  sockfd:服务器的socket描述字

  addr:服务器的socket地址

  addrlen:服务器socket地址的长度

 · 返回值类型:返回的是一个不同的socket,这个socket保存的是你客户端的socket信息

ssize_t read(int sockfd , void *buf , size_t count);

  读取socket内容

  sockfd:socket描述字

  buf:缓冲区

  count:缓冲区的长度

ssize_t write(int sockfd , void *buf , count);

  写入socket内容

  sockfd:socket描述字

  buf:缓冲区

  count:缓冲区长度

int close(int sockfd);

  标记socket为关闭,使相应socket描述字的引用计数为-1,当引用计数为0时,触发TCP客户端向服务器发送终止连接请求

socket编程部分API的更多相关文章

  1. socket编程及API简介

    什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域 ...

  2. 在线服务之socket编程科普

    简介 本篇文章是介绍一个典型的在线C++服务的最底层socket管理是如何实现的. 文章会从一个最简单的利用socket编程基础API的一个小程序开始,逐步引入现在典型的select,epoll机制, ...

  3. Socket编程实践(2) Socket API 与 简单例程

    在本篇文章中,先介绍一下Socket编程的一些API,然后利用这些API实现一个客户端-服务器模型的一个简单通信例程.该例子中,服务器接收到客户端的信息后,将信息重新发送给客户端. socket()函 ...

  4. socket编程 ------ BSD socket API

    伯克利套接字(Berkeley sockets),也称为BSD Socket.伯克利套接字的应用编程接口(API)是采用C语言的进程间通信的库,经常用在计算机网络间的通信. BSD Socket的应用 ...

  5. 【TCP/IP】之Java socket编程API基础

    Socket是Java网络编程的基础,深入学习socket对于了解tcp/ip网络通信协议很有帮助, 此文讲解Socket的基础编程.Socket用法:①.主要用在进程间,网络间通信. 文章目录如下: ...

  6. Linux下的C Socket编程 -- 简介与client端的处理

    Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...

  7. socket编程学习step1

    socket学习参考链接,赞一个:http://blog.csdn.net/hguisu/article/details/7445768 sockets(套接字)编程有三种,流式套接字(SOCK_ST ...

  8. socket编程基础

    socket编程 什么是socket 定义 socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或者应答网络请求. socket起源于Unix ...

  9. Java Socket编程

    Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...

随机推荐

  1. Ajax-javascript

    一.Web 2.0的特点 提到Ajax不得不提到WEB2.0 1.用户贡献内容 2.内容聚合RSS 3.更丰富的"用户体验" 二.Ajax的作用 无刷新:不刷新整个页面,只刷新局部 ...

  2. svg-写一个简单的进度条

    html <div class="container"> <div class="line-wrap"> <svg version ...

  3. 实现JavaScript forEach

    function forEach(list, callback){ ; n <list.length; n++){ callback.call(list[n], n); } } ,,,,,,,] ...

  4. 使用ThinkPHP的扩展功能

    文件上传类的代码位于“\ThinkPHP\Libabry\Think\Uplod.class.php”,实例化电偶用即可.1:在Home模块Index控制器test方法中实现文件上传功能.打开文件\A ...

  5. 外部地址访问xampp

    默认情况下xampp只能访问本地服务器的地址.即localhost如果需要在外部机器访问XAMPP,则需要修改配置:找到xampp的文件夹,找到apache文件夹中的conf->extra-&g ...

  6. c语言贪吃蛇详解-2.画出蛇

    c语言贪吃蛇详解-2.画出蛇 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 蛇的身 ...

  7. 使用JSCH框架通过跳转机访问其他节点

    之前搞了套远程访问ssh进行操作的代码,最近有需求,需要通过一台跳转机才能访问目标服务.在网上搜了半天,也没找到比较好的例子,就自己翻阅了下JSCH的API.但是看的云里雾里的.联想了下,端口转发的原 ...

  8. WPF自定义产品框架

    在讲解之前先看一下效果,有助于理解: 这是客户端的效果图.整个产品分为两部分:1.WPF开发的展示效果的客户端   2.WCF开发的提供数据服务接口的服务端   本章主要讲解一下实际中开发WPF开发客 ...

  9. 用echartsjs 实现动态绘制折线、柱状等图形,并实现多图联动效果

    echarts对于大数据处理后绘制折线图,柱形图等等的效果和速度都很好.下面我们介绍 怎么把封装的数据列表解析出来,动态绘图,并且实现鼠标联动效果引入js文件: <script type=&qu ...

  10. oracle中 merge into 的用法

    很多时候我们需要通过筛选条件同时对表进行 更新,插入,删除 等操作.这样如果我们单一的去操作表会显得很麻烦,下面会说到这个merge  into 的用法会极大的优化我们操作表的时间和代码量. 举例,先 ...