scoket:
 
是一种抽象层,应用程序通过它来发送和接收数据,使用socket可以将应用程序添加到网络中,与处于同一网络中的其他应用程序进行通信。
简单来说,scoket提供了程序内部与外界通道的端口并为通信双方提供了数据传输通道。

 
常用函数:
WSAStartup(MAKEWORD(2,2),&wsd):初始化套接字
  声明调用不同的Winsock版本,上例就是调用的2.2版,例如1.1版只支持Tcp/Ip协议,而2.0版可支持多协议,此外winsock 2.0支持异步 1.1不支持异步
   &wsd:保存socket执行信息的一个数据结构
 
socket()函数: 用于创建一个socket描述符(socket descriptor),它唯一标识一个socket
  (1)原型:int socket(int domain ,int type, int protocol);
  (2)参数
              domain:又称为协议族family,常见的协议族有AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域socket,可用来本地进程间的通信)。用来区分是创建ipv4的套接字(AF_INET)还是ipv6的套接字(AF_INET6).
             type:指定socket类型,常见的类型有SOCK_STREAM(创建面向连接的流式套接字)、SOCK_DGRAM(创建面向无连接的数据包套接字)、SOCK_RAW(提供单一的网络访问,使用ICMP公共协议)
             protocol:常用的公共协议有,IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议  
   注意:上面的type和protocol不是可以随意组合的,如SOCK_STREAM不可以跟IPPROTO_UDP组合。当protocol为0时,会自动选择type类型对应的默认协议。
 
bind()函数: 将特定的ip地址,port端口号绑定到socket上
  (1)原型: int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
  (2)参数: sockfd(即socket描述字它是通过socket()函数创建了,唯一标识一个socket)
                       addr(一个const struct sockaddr *指针,指向要绑定给sockfd的协议地址,包含有关你的地址的信息:名称、端口和IP 地址)
                       addrlen:对应的是地址的长度。
 
listen()函数: 调用listen()来监听这个socket,如果客户端这时调用connect()发出连接请求,服务器端就会接收到这个请求
  (1)原型: int listen(int sockfd, int backlog);
  (2)参数: sockfd 是一个套接字描述符,为要监听的socket描述字。
                             backlog表示等待连接的最大队列状态。      
 注意:socket()函数创建的socket默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求。
 
connect()函数: 客户端通过调用connect函数来建立与TCP服务器的连接
   (1)原型: int connect (int sockfd, struct sockaddr *serv_addr, int addrlen);
   (2)参数:   sockfd :套接字文件描述符,由socket()函数返回的,此中为客户端的sockfd。
                      serv_addr 是一个存储远程计算机的IP 地址和端口信息的结构,一般为服务器的ip与port的结构。
                      addrlen 应该是sizeof(struct sockaddr)表示缓冲区的长度。
 
accept()函数:用于接收客户端的链接
     (1)原型:int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
     (2)参数:sockfd :一个套接字标志应该处于监听状态;
                      addr:包含一组客户端的端口和地址信息
                     addrlen:sizeof(struct sockaddr_in)用于接收参数addr的长度
 
send()函数:用于在面向连接方式的套接字间发送数据
       (1)原型: size_t send(int sockfd,constvoid *buf, size_t len,int flags);
       (2)参数: sockfd:发送端套接字描述符(非监听描述符)
                          buf:应用要发送数据的缓存
                          len:实际要发送的数据长度
                          flag:表示函数的调用方式 一般设置为0
 
recv()函数:用于从面向连接的套接字中接收数据
     (1)原型: ssize_t recv(int sockfd,void *buf, size_t len,int flags);
     (2)参数:sockfd:接收端套接字描述符;
                         buf:指定缓冲区地址,用于存储接收数据;
                         len:指定的用于接收数据的缓冲区长度;
                        flags:表示函数的调用方式一般指定为0
 
close()函数: 套接字将不会在允许进行读操作和写操作。任何有关对套接字描述符进行读和写的操作都会接收到一个错误。
    (1)原型: int close(int sockfd);
 
WSACleanup函数:用于释放从Ws2_32.dll动态连接库初始化分配的资源
 

scoket常用函数简单介绍的更多相关文章

  1. linux常用函数简单介绍

    mmap函数简介: mmap函数是unix/linux下的系统调用,来看<Unix Netword programming>卷二12.2节对mmap的介绍: The mmap functi ...

  2. iOS性能检测之Instrunments - 几种常用工具简单介绍

    Instrunments:  没错,就是这货,很多人平时开发可能不一定会用到这个,但我要说的是,学会使用它,会让你加分不少哦 先来一张全家福: 1.打开方式 或者 两种方式都行. 2.今天主要介绍一下 ...

  3. VC API常用函数简单例子大全(1-89)

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

  4. PostGis常用函数中文介绍

    记录常用PostGis常用函数: 1.OGC标准函数 管理函数: 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ...

  5. javascrip函数简单介绍

    JavaScript 函数定义JavaScript 使用关键字 function 定义函数.函数可以通过声明定义,也可以是一个表达式.函数声明在之前的教程中,你已经了解了函数声明的语法 :functi ...

  6. day4_函数简单介绍

    一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...

  7. 12.常用类简单介绍.md

    目录 1.Scanner类 2.System类 4.Object类和工具类 5.StringBuffer类和StringBuilder类 6.Math类 7.Random类和ThreadLocalRa ...

  8. Android 升级脚本updater-script 的函数简单介绍

    这是Android系统来执行updater-scripts中的函数介绍. 函数都是的Edify语言.当调用这些函数结束的时候.会返回数据给脚本.当然,你也能够使用这些函数的返回值来确认成功与否,比如: ...

  9. PostGIS 常用函数中文介绍说明

    1.OGC标准函数 管理函数: 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geom ...

随机推荐

  1. 【转载】从零实现3D图像引擎:(1)环境配置与项目框架

    原文:从零实现3D图像引擎:(1)环境配置与项目框架 0. 要学懂3D程序设计,必然要精通3D相关的线性代数.3D几何.复分析等相关知识,我也因为如此才开始这个博客系列的写作,不自己实现,就不是自己的 ...

  2. Windows下python环境的安装

    1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机]-->[属性]-->[高 ...

  3. CentOS7安装及配置vsftpd (FTP服务器)

    CentOS7安装及配置vsftpd (FTP服务器) 1.安装vsftpd 1 yum -y install vsftpd 2.设置开机启动 1 systemctl enable vsftpd 3. ...

  4. activeX 打包

    原文 http://www.docin.com/p-409284488.html CAB打包文档说明 文档目的 本文档的目的在于说明将ocx和dll以及相关的文件打包成一个CAB包,以便在网页下调用o ...

  5. 180719-Quick-Task 动态脚本支持框架之使用介绍篇

    文章链接:https://liuyueyi.github.io/hexblog/2018/07/19/180719-Quick-Task-动态脚本支持框架之使用介绍篇/ Quick-Task 动态脚本 ...

  6. fastdfs+nginx+image_filter安装与生成缩略图

    fastdfs简介 类似google FS的一个轻量级分布式文件系统,纯C实现,支持linux.FreeBSD等UNIX系统: 只能通过API访问,不支持POXIS: 文件不分块存储,上传的文件和OS ...

  7. OpenWrt架设nginx php网站

    参考 http://www.vinoca.org/2012/05/31/openwrt%E6%9E%B6%E8%AE%BEnginxphp%E7%BD%91%E7%AB%99/ 一.安装相关包 opk ...

  8. 用Python实现多站点运维监控

    在小型公司里如果产品线单一的话,比如就一个app, 一般1~2个运维就够用了.如果产品过于庞大,就需要多个运维人员. 但对于多产品线的公司来说,运维人员就要必须分多个人负责,因为超过200个站点让1个 ...

  9. 十几行代码带你用Python批量实现txt转xls,方便快捷

    前天看到后台有一兄弟发消息说目前自己有很多txt 文件,领导要转成xls文件,问用python怎么实现,我在后台简单回复了下,其实完成这个需求方法有很多,因为具体的txt格式不清楚,当然如果是有明确分 ...

  10. hadoop常见错误解决方法

    一.启动集群时 1.节点启动失败 1.1端口占用 1.1报错信息:address already in use - bind Address:50070 解决步骤: 查询端口占用:lsof -i:50 ...