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. 【LG3321】[SDOI2015]序列统计

    [LG3321][SDOI2015]序列统计 题面 洛谷 题解 前置芝士:原根 我们先看一下对于一个数\(p\),它的原根\(g\)有什么性质(好像就是定义): \(g^0\%p,g^1\%p,g^2 ...

  2. [css 揭秘] :CSS揭秘 技巧(五):条纹背景

    条纹背景 https://github.com/FannieGirl/ifannie/问题:条纹背景 在设觉设计中无处不在,我们真的可以用css 创建图案吗? 这一章相对还是比较复杂的哦!一起get. ...

  3. Spring学习(五)-----注入bean属性的三种方式( 1: 正常的方式 2: 快捷方式 3: “p” 模式)

    在Spring中,有三种方式注入值到 bean 属性. 正常的方式 快捷方式 “p” 模式 看到一个简单的Java类,它包含两个属性 - name 和 type.稍后将使用Spring注入值到这个 b ...

  4. Mac下重置MySQL密码

    第一步要先停止掉mysql服务: brew services stop mysql 第二步查看mysql安装路径: brew info mysql //我这里是brew管理的所以我用brew查看mys ...

  5. css控制字体线使用:text-decoration

    css控制字体下划线使用text-decoration : text-decoration:none 无装饰,通常对html下划线标签去掉下划线样式 text-decoration:underline ...

  6. dubbo常见的一些面试题

    什么是Dubbo? Duubbo是一个RPC远程调用框架, 分布式服务治理框架 什么是Dubbo服务治理? 服务与服务之间会有很多个Url.依赖关系.负载均衡.容错.自动注册服务. Dubbo有哪些协 ...

  7. 移动端车牌识别/车牌OCR识别

    周末,小编约了朋友商场shopping. 开车进地下车库时,“滴”的一声,完成车牌录入:开车离开时,扫描二维码,输入车牌,完成停车收费.小编不禁感叹科技改变生活,人工智能给生活带来的便利. 车牌自动识 ...

  8. 136.只出现一次的数字 leetcode ^运算符 JavaScript解法

    leetcode上的一道题简单题 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间 ...

  9. ES6 之 解构赋值

    本博文配合 阮一峰 <ES6 标准入门(第3版)>一书进行简要概述 ES6 中变量的解构赋值. 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这 ...

  10. 【Python 开发】Python目录

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