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. 《Java 程序设计》课堂实践项目-mini dc

    <Java 程序设计>课堂实践项目-后缀表达式 课后学习总结 目录 改变 mini dc实验要求 后缀表达式介绍 课堂实践成果 课后思考 改变 修改了博客整体布局,改变了之前贴个截图粘个代 ...

  2. SSM-CRUD实战

    前端最容易出现缓存问题,所以以后每次都必须完全在idea加载完后,再在浏览器端多 执行 ctrl+F5 索要最新copy 这样就能拿到最新的改动了,就不会出现各种代码没问题但是功能就是实现不了的问题 ...

  3. JS基础,课堂作业,相亲问答

    相亲问答 <script> var a = prompt("你有房子么?"); var b = prompt("你有钱么?"); var c = p ...

  4. tomcat7以上的版本,400BadRequest

    出现此原因的解决办法其一,详情可见: https://www.cnblogs.com/dygrkf/p/9088370.html. 另一种解决方法,就是把url中不允许出现的字符编码,后台接收时再解码 ...

  5. java list根据id获取子节点

    工作中因业务需求,将数据库中的树状结构的数据根据父节点获取所有的子节点 实现思路 1.获取整个数据的list集合数据 2.将数据分组,java8 list有groupby分组,java8之前的自己遍历 ...

  6. 人脸检测及识别python实现系列(3)——为模型训练准备人脸数据

    人脸检测及识别python实现系列(3)——为模型训练准备人脸数据 机器学习最本质的地方就是基于海量数据统计的学习,说白了,机器学习其实就是在模拟人类儿童的学习行为.举一个简单的例子,成年人并没有主动 ...

  7. 《Angular4从入门到实战》学习笔记

    <Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...

  8. 【Python 开发】Python目录

    目录: [Python开发]第一篇:计算机基础 [Python 开发]第二篇 :Python安装 [Python 开发]第三篇:python 实用小工具

  9. 2.openldap安装

    1.安装步骤如下 获取软件包 安装软件包(rpm或者源码编译) 生产openldap配置文件及数据库文件 配置 添加目录树条目 加载slapd进程 验证 2.所需安装包说明 openldap,open ...

  10. Python Fileinput 模块介绍

    作者博文地址:http://www.cnblogs.com/spiritman/ fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行. [默 ...