zoukankan      html  css  js  c++  java
  • VC++使用socket进行TCP、UDP通信实例总结

    1.        两台计算机通信需要协议,通信的两台计算机IP必须唯一

    2.        同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一标示。

    3.        实际上就类似于一个办公室的总机号码(IP)和分机号码(端口号)

    4.        协议:为了进行网络中的数据交换(通信)而建立的规则、标准或约定

    5.        协议=语义+语法+规则

    6.        不同层具有各自不同的协议

    7.        上层使用下层提供的服务,实际通信在最底层完成

    8.        对等层实体之间虚拟通信|

    9.        TCP:面向连接的可靠的传输协议

    10.      UDP:面向无连接的不可靠的传输协议

    11.    端口是一种抽象的软件结构。应用程序通过系统调用与某端口建立连接后,传输层传给端口的数据都被响应的进行所接收,相应进程发给传输层的数据都通过该端口输出。

    12.    端口用一个整数型标示符来表示。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。

    13.    端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务。例如:http使用的是80端口。

    14.    socket(套接字):windows sockets只支持一个通信区域:网际域(AF_INET),这个域被使用网际协议簇通信的进程使用。

    15.    C/S模式:客户机向服务器提出请求,服务器接收到请求后,提供相应的服务。

    16.    套接字的类型

      a)        流式套接字:(SOCK_STREAM):面向连接可靠的数据传输服务,按顺序接收

      b)       数据包式套接字:(SOCK_DGRAM):无连接服务。接收顺序混乱。

      c)       原始套接字(SOCK_RAM)

    17.    基于TCP(面向连接)的socket编程

    a)        服务器端程序:

                          i.             创建套接字socket

                          ii.             将套接字绑定到一个本地地址和端口上bind

                          iii.             将套接字设为监听模式,准备接收客户请求listen

                          iv.             等待客户请求到了;当请求到来后,接收连接请求,返回一个新的对应于此次连接的套接字accept

                          v.             用返回的套接字和客户端进行通信send/recv

                         vi.             返回,等待另一客户请求

                         vii.             关闭套接字

    b)       客户端程序:

                            i.             创建套接字socket

                            ii.             向服务端发出连接请求connect

                            iii.             和服务器端进行通信rend/recv

                            iv.             关闭套接字

    18.    基于UDP的socket编程

    a)        服务器端(接收端)程序:

                            i.             创建套接字socket

                            ii.             将套接字绑定到一个本地地址和端口上bind

                           iii.             等待接收数据recv/from

                           iv.             关闭套接字

    b)       客户端(发送端)程序:

                            i.             创建套接字socket

                            ii.             向服务器发送数据sendto

                            iii.             关闭套接字

    19.int WSAStartup (

      WORD wVersionRequested, //打算使用的最高winsock版本号 
      LPWSADATA lpWSAData  //是个结构体,接收socket的详细信息

    );

    20.    alt+F8:格式化代码

    21.    面向TCP的连接,服务器端

      a) 套接字

    SOCKET socket (
      int af,       //指定地址簇
      int type,     //socket类型
      int protocol  //协议

    );

      b) 绑定

    int bind (
      SOCKET s,                          //要绑定的套接字
      const struct sockaddr FAR*  name,  //指定了该套接字的本地地址信息
      int namelen                        //该地址结构的长度
    );

    struct sockaddr {

           u_short    sa_family;

           char       sa_data[14];

    };

      c)       监听

    int listen (
      SOCKET s,    
      int backlog  
    );

      d)       接受连接

    SOCKET accept (
      SOCKET s,                   
      struct sockaddr FAR* addr
      int FAR* addrlen            
    );
     e)  发送
    int send (
      SOCKET s,              //建立连接的socket
      const char FAR * buf,  //发送的数据
      int len,               //发送数据的长度
      int flags              
    );
      f)  接收
    int recv (
      SOCKET s,       
      char FAR* buf
      int len,        
      int flags       
    );
      g)  需要的文件
    #include <winsock2.h>
    需要连接一个动态链接库:ws2_32.lib

      22.    服务器端:

      a)        Socket

      b)       连接:connect

     int connect (
      SOCKET s,                          
      const struct sockaddr FAR*  name
      int namelen                        
    );

      c)       接收:recv

      d)       发送:send

      e)        关闭:closesocket

    参考文献:

    1、VC++ socket通信实例 总结

    2、VC++ 使用socket基于TCP、UDP通信

  • 相关阅读:
    Lua之math
    Lua之table
    Unity shader学习之轮廓效果
    c#之根据出生日期获得星座信息
    unity之复制文本到剪贴板
    Unity shader学习之屏幕后期处理效果之运动模糊
    Unity之如何从fbx提取Animation clip文件
    c#如何判断字符串是否含中文
    c#之如何转换文本文件编码格式为utf-8
    《Photon》
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/8059270.html
Copyright © 2011-2022 走看看