关于socket

一.   定义

       typedef    unsigned     int   SOCKET;

      Socket相当于在进行网络通信 两端的插头.

二.  分类

      (1)  流式套接字 

             定义:  #define  SOCK_STREAM  1

             流式套接字提供了双向,有序的,无重复的以及无记录边界的数据流服务,适合处理大量数据.它是面向连接的,必须建立数据传输链路,同时还必须对传输的数据进行验证,保证数据的准确性.系统开销大.

      (2)  数据报套接字

             定义:  #define   SOCK_DGRAM     2

             也支持双向的数据流,但是它不保证传输数据的准确性,保留了边界记录.由于它是无连接的,例如广播,所以不保证接收端是否在监听.传输效率较高.

      (3)  原始套接字

            定义:  #define     SOCK_RAW        3

            保持了数据包中的完整IP头,可以通过原始套接字对数据进行分析.

    (4)  其他(不常用就不做介绍)

三.  socket开发所需要的文件

       头文件: WinSock2.h

       库文件:  ws2_32.lib

       动态库:  w32_32.dll

四.  套接字地址结构

1.    sockaddr结构

       struct      sockaddr

       {

              unsigned     short    sa_family;            //为网络地址类型.一般为AF_INET,表示该socket在internet域中通信. sockaddr_in结构与该地址结构相同,由于它是用来标识TCP/IP协议下的地址,所以sockaddr_in相对sockaddr来说更常用,

              char     sa_data[14];

       }

2.   sockaddr_in结构

       struct    sockaddr_in

       {

              short     sin_family;                                  //为网络地址类型.

              unsigned    short   sin_point;                //为服务端口.不要使用固定的端口,如HTTP的80; 如设置为0,系统则会自动分配一个唯一的端口.

              struct     in_addr     sin_addr;                //为一个unsigned  long类型的IP地址.

              char      sin_zero[8];                                //为填充字段.

         }

五.  套接字的属性

1.   读取socket属性

      int    getsockopt

      (

              SOCKET  sock,                                       //要读取属性的套接字

              int              level,                                      //套接字选项的级别

              int             optname,                               //读取选项的名称

             char          FAR *  optval,                        //存放选项值的缓冲区指针

             int             FAR  *  optlen                        //缓冲区的长度

        )

2.  设置socket属性

  int    setsockopt

      (

              SOCKET  sock,                                   

              int              level,                                 

              int             optname,                              

             char          FAR *  optval,                      

             int             FAR  *  optlen                      

        )

六.  套接字的使用

       待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值