网络套接字编程

1.ip地址  2.port  3.网络字节序 4.浅层次tcp和udp区别  5.udp协议实现网络通信  6.tcp协议实现网络通信 

 

1.ip地址

a.作用:在网络中唯一标识一台主机

b.本质:uint32_t  无符号4个字节

c.源ip和目的ip地址

5元组 = 源ip+源端口+目的ip+目的端口+协议

ipv6:a.ipv4和ipv6制的不同版本的ip协议

          b.ipv6并不兼容ipv4,两者的ip协议的报头格式不同

          c.ipv6  16个字节

 

2.port

a.端口在一台主机中表示一个进程

b.本质:uint16_t  范围65535

c.知名端口:0-1023   mysql--3306   oracle--1521 ssh--20  http--80 

d.网络通信的时候双方都需要端口

3.网络字节序

字节序:CPU对内存当中的数据进行存取的顺序

大端字节序:低地址存放高位

小端字节序:低地址存放低位

网络字节序:大端字节序进行传输;网络标准

小端字节序转换成网络字节序:

uint32_t htonl(uint32_t hostlong)

uint32_t ntohl(uint32_t netlong)

uint16_t htons(uint16_t hostshort)

uint16_t ntohs(uint16_t netshort)

#include <iostream>
#include <stdio.h>

int main()
{
    union Data
    {
        int a;
        char b;
    }data;

    //0x00000001
    data.a = 1;

    if(data.b == 1)
    {
        printf("小端\n");
    }
    else
    {
        printf("大端\n");
    }
    return 0;
}

 

4.浅层次tcp和udp区别

    TCP

         面向连接:tcp的通信双方在发送数据之前,需要先建立连接,才可以发送数据

         可靠传输:保证TCP数据包可靠到达对端

         面向字节流:对于TCP数据可以任意存取

   UDP

        无连接:UDP通信双方在发送数据之前,不需要建立连接,只需要知道对方的ip和port就可以直接发送数据

        不可靠:如果UDP数据在网络当中传输的时候,丢失掉了,则不会保证udp数据一定到达对端

        面向数据包:UDP在发送数据的时候,是整条发送整条接收的

5.udp协议实现网络通信

UDP套接字流程接口

 服务端:

     1.创建套接字:将进程和网卡建立连接

     2.绑定地址信息:将端口和进程联系起来;绑定IP地址+Port

     3.接收数据

     4.发送数据

     5.关闭套接字

客户端( client):

     1.创建套接字

     2绑定地址信息(不推荐在客户端绑定地址信息, 1.操作系统会帮我们绑定地址信息2.如果绑定地址信息,也就是意味着固定客户端的端口了,由于端口不能同时被多个进程所占用。当前机器就只能启动一个客户端程序了; )

     3.发送数据

     4.接收数据

     5.关闭套接字

接口:

1.创建套接字的接口
     int socket(int domain, int type, int protocol)
             domain:地址域,传入协议的版本
             网络层: AF_ _INT-->ipv4版本的ip协议
                         AF_ INET6-->ipv6版本的ip协议
             type:套接字的类型
             传输层: tcp/udp ;
                         tcp : SOCK STREAM:流式套接字;默认的协议就是tcp ,不支持udp的

                         udp: SOCK DGRAM:数据报套接字;默认读的协议就是udp ,不支持tcp的protocol:协议
                         0 :采用套接字默认协议
                            tcp: IPPROTO _TCP(6)
                            udp:IPPROTO_ UDP(17)
           返回值:
                    返回套接字的操作句柄,其实就是-一个文件描述符; - -般称之为套接字描述符
2.绑定地址信息
int bind(int sockfd, const struct sockaddr* addr, socklen. _t addrlen)
          sockfd:套接字操作句柄。
         addr:
            struct sockaddr

           {
            sa_ family. _t sa. _fa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值