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. Windows下安装RaibbitMQ

    1.软件准备 1.1 erlang语言包 到http://www.erlang.org/download.html下载,并且运行! 安装目录C:\Program Files (x86)\erl5.10 ...

  2. EmitMapper自动映射工具

             在实体与DTO之间,我们一般都需要进行映射.如果手动的来进行转换,实在是太麻烦.所以就产生了很多映射工具,比如AutoMapper,EmitMapper.而经过一些对比,EmitMa ...

  3. php小项目小结

    最近一直断更,并不是出于什么问题,而是想找个合适的机会去整理下html基本的一些琐碎的知识点 近期突发感冒,吊水,吊错药,原因只是重名重姓,这不是个梗,很是痛苦的现实事故 so,只能用剩下的半天去完成 ...

  4. javaweb(十四)——JSP原理

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  5. leetcode- 将有序数组转换为二叉搜索树(java)

    将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...

  6. thinkphp5框架生成二维码

    二话不说,先上代码: 第一中: 不用再本地保存文件,直接在前台页面显示: 这是控制器里面的内容,哦,对啦,首先要下载SDK:.phpqrcode类文件下载,下载地址:https://sourcefor ...

  7. Paper Reading - Deep Captioning with Multimodal Recurrent Neural Networks ( m-RNN ) ( ICLR 2015 ) ★

    Link of the Paper: https://arxiv.org/pdf/1412.6632.pdf Main Points: The authors propose a multimodal ...

  8. Web安全入门书籍推荐

    <Web应用安全权威指南> 链接:https://pan.baidu.com/s/1wZgv3c9jhWm1bAUHZw3gEg 提取码:teqj <黑客攻防技术宝典__Web实战篇 ...

  9. pyextend库-merge可迭代对象合并函数

    pyextend - python extend lib merge (iterable1, *args) 参数:  iterable1: 实现 __iter__的可迭代对象, 如 str, tupl ...

  10. 3.Airflow使用

    1. airflow简介2. 相关概念2.1 服务进程2.1.1. web server2.1.2. scheduler2.1.3. worker2.1.4. celery flower2.2 相关概 ...