网络编程核心概念与模式

网络编程核心概念与模式

1、问题

如何进行网络编程?

2、网络编程的本质

​ 使用操作系统提供的接口函数,使得应用程序具备收发网络数据的能力。

  • 网络接口在代码层面是操作系统提供的函数
    • 网络编程只是一系列系统函数的花式玩法
  • 应用程序通过网络接口使用操作系统的联网能力
    • 网络编程是特定领域的C语言程序设计

3、网络编程核心概念

  • 协议:为进行数据通信而预定义的数据规则
  • 地址:网络通信中的用于标识设备的整数值
  • 端口号:
    • 设备为收发数据而指定的数值,用于标识具体连接
    • 可理解为:设备中用于网络通信的数据通道
  • 角色
    • 服务端:等待连接的设备
    • 客户端:发起连接的设备
  • 网络知识充电站
    • 网址就是IP地址吗?URL是什么?域名又是什么?
      • 网址不是IP地址,是网络信息资源的地址(如:具体网页的地址),即:URL
      • 域名是IP地址的别名,多个域名可指向同一个IP地址
    • 协议一定是看不懂的二进制数据吗?
      • 协议是一种约定,即:预先定义的规则
      • 协议可以基于文本定义,也可以基于二进制定义
    • 小端系统
      • 采用小端模式的系统,即:数据低字节放在内存低地址中
    • 大端系统
      • 采用大端模式的系统,即:数据低字节放在内存高地址中
    • 网络字节序
      • 网络字节顺序采用大端模式,所以:在小段系统需要做字节序转换

4、网络编程模式

1. 准备网络连接
2. 连接远程设备
3. 收发数据
4. 关闭连接
  • 初探网络编程接口
#include<sys/types.h>
#include<sys/socket.h>
函数原型功能描述
int socket(int domain, int type, int protocol);创建套接字,为网络连接做准备
int connect(SOCKET s, const struct sockaddr * name, int namelen);连接指定地址的远程设备
ssize_t send(int s,const void* buf,size_t len,int flags);发送数据到远程设备
ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags);接收远程设备发回的数据
int close(int fd);关闭连接,销毁套接字

5、编程实验

//1-1.c

#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>

int main()
{
    int sock = 0;
    struct sockaddr_in addr = {0};  
    char* tosend = "GET /index.html HTTP/1.1\nHOST: www.dt4sw.com\nUser-Agent: TEST\nConnection: close\n\n";
    int len = 0;
    int r = 0;
    char buf[128] = {0};

    sock = socket(PF_INET,SOCK_STREAM,0);
    if(sock == -1)
    {
        printf("socket err\n");
        return -1;
    }

    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("47.99.217.175");
    addr.sin_port = htons(80);

    if(connect(sock,(struct sockaddr*)&addr,sizeof(addr)) == -1)
    {
        printf("connect err\n");
        return -1;
    }

    printf("connect success\n");

    len = send(sock,tosend,strlen(tosend),0);
    printf("send bytes = %d\n",len);

    do
    {
        int i = 0;

        r = recv(sock, buf, sizeof(buf), 0);

        if( r > 0)
        {
            len += r;
        }

        for( i = 0; i < r; i++)
        {
            printf("%c",buf[i]);
        }
    } while ( r > 0);

    printf("\n");
    printf("recv bytes = %d\n",len);

    close(sock);

    return 0;
}

运行结果:

connect success
send bytes = 81
HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Wed, 19 May 2021 14:09:18 GMT
Accept-Ranges: bytes
ETag: "0bb8c8eb84cd71:0"
Server: Microsoft-IIS/7.5
Date: Mon, 01 Nov 2021 13:59:57 GMT
Connection: close
Content-Length: 22138

<!DOCTYPE html>
<html lang="zh-cn">
<head>
  <meta charset="utf-8" />
  <title>狄泰软件官网-专业c/c++嵌入式培训课程</title>
  <meta name="keywords" content="狄泰软件,c/c++,机器学习,计算机视觉应用,嵌入式视觉应用软件研发" />
  <meta name="description" content="唐佐林致力于加强在校学生和从业人员的c/c++基础技能训练,帮助从业人员掌握企业所需要的核心开发技能。同时,狄泰软件在模式识别与智能系统领域有着雄厚的研发实力,专业致力于机器学习算法研发,计算机视觉应用系统整体解决方案设计,以及嵌入式视觉应用软件研发等一站式服务。" />
  <link rel="stylesheet" href="./static/css/style.css" />
  <script src="./modules/jquery/lib/10.0.1.min.js"></script>
  <script src="./modules/superSlide/lib/2.1.3.js"></script>
</head>

<body>
  <div class="header" id="header">
    <div class="wrap clearfix">
      <div class="logo">
        <a href="/">
          <img src="./sources/logo.png" alt="" />
          <h1>狄泰软件 </h1>
        </a>
      </div>
      <ul class="nav" id="nav">
        <li class="item current">
          <a href="./index.html" target="_blank">首页</a>
        </li>
        <li class="item">
          <a href="./course.html" target="_blank">课程培训</a>
        </li>
        <li class="item">
          <a href="./detail.html" target="_blank">课程详情</a>
        </li>
        <li class="item">
          <a href="./teacher.html" target="_blank">老师介绍</a>
        </li>
        <li class="item">
          <a href="./college.html" target="_blank">狄泰未来介绍</a>
        </li>
        <li class="item">
          <a href="https://dt4sw.ke.qq.com/ " target="_blank">在线课堂</a>
        </li>
        <li class="item">
          <a href="https://linxiit.taobao.com" target="_blank">淘宝店铺</a>
        </li>
        <li class="line">
          <i></i>
        </li>
      </ul>
      <div class="taggs">
        <img src="./sources/taggs.png" alt="">
      </div>
    </div>
  </div>

  <div class="banner" id="banner">
    <div class="list">
      <ul>
        <li>
          <img src="./sources/banner-191215-1.jpg" alt="" />
        </li>
        <li>
          <img src="./sources/banner-191215-2.jpg" alt="" />
        </li>
      </ul>
    </div>
    <div class="dots">
      <ul></ul>
    </div>
    <div class="prev"></div>
    <div class="next"></div>
  </div>

  <div class="home-tags">
    <div class="wrap">
      <div class="main">
        <ul class="list clearfix">
          <li class="item">
            <div class="cell">
              <img src="./sources/tags-191215-1.png" alt="">
              <h3>大佬教学</h3>
              <p>原摩托罗拉架构师,人工智能专家</p>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <img src="./sources/tags-191215-2.png" alt="">
              <h3>实战课程</h3>
              <p>按照企业需求来设计课程</p>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <img src="./sources/tags-191215-3.png" alt="">
              <h3>免费试学</h3>
              <p>大量免费试看内容</p>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <img src="./sources/tags-191215-4.png" alt="">
              <h3>性价比</h3>
              <p>课程价钱不及线下培训机构二十分之一</p>
            </div>
          </li>
        </ul>
      </div>
    </div>
  </div>

  <div class="home-hots">
    <div class="wrap">
      <div class="head">
        <h2>热门线上课程</h2>
        <a href="javascript:;" target="_blank">查看更多 &gt;</a>
      </div>
      <div class="main">
        <ul class="list2 clearfix">
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://ke.qq.com/course/176295?taid=985334217355431&tuin=157aae4e" target="_blank">
                <img src="./sources/cource-a3.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://ke.qq.com/course/176295?taid=985334217355431&tuin=157aae4e" target="_blank" title="">Qt实验分析教程</a></h3>
              </div>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://ke.qq.com/course/223662?taid=1342112855714222&tuin=157aae4e" target="_blank">
                <img src="./sources/cource-a2.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://ke.qq.com/course/223662?taid=1342112855714222&tuin=157aae4e" target="_blank" title="">linux内核链表详解</a></h3>
              </div>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://ke.qq.com/course/175018?taid=878303632337834&tuin=157aae4e" target="_blank">
                <img src="./sources/cource-a4.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://ke.qq.com/course/175018?taid=878303632337834&tuin=157aae4e" target="_blank" title="">C语言进阶课程</a></h3>
              </div>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://www.bilibili.com/video/av75437389?from=search&seid=3113614819828990758" target="_blank">
                <img src="./sources/cource-a5.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://www.bilibili.com/video/av75437389?from=search&seid=3113614819828990758" target="_blank" title="">数据结构实战教程</a></h3>
              </div>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://ke.qq.com/course/278029?taid=1886963817004557&tuin=157aae4e" target="_blank">
                <img src="./sources/cource-a1.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://ke.qq.com/course/278029?taid=1886963817004557&tuin=157aae4e" target="_blank" title="">C++深度解析课程</a></h3>
              </div>
            </div>
          </li>
        </ul>
        <ul class="list clearfix">
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://ke.qq.com/course/176295?taid=985334217355431&tuin=157aae4e" target="_blank">
                <img src="./sources/cource-a3.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://ke.qq.com/course/176295?taid=985334217355431&tuin=157aae4e" target="_blank" title="">Qt网站</a></h3>
                <ul class="di">
                  <li class="fee">
                    <i class="icon-ios"></i>
                    <span>9.00</span>
                  </li>
                  <li class="hits">
                    <span>2741人已学</span>
                  </li>
                </ul>
              </div>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://ke.qq.com/course/223662?taid=1342112855714222&tuin=157aae4e" target="_blank">
                <img src="./sources/cource-a2.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://ke.qq.com/course/223662?taid=1342112855714222&tuin=157aae4e" target="_blank" title="">linux内核链表</a></h3>
                <ul class="di">
                  <li class="fee">
                    <i class="icon-ios"></i>
                    <span>9.00</span>
                  </li>
                  <li class="hits">
                    <span>2741人已学</span>
                  </li>
                </ul>
              </div>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://ke.qq.com/course/175018?taid=878303632337834&tuin=157aae4e" target="_blank">
                <img src="./sources/cource-a4.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://ke.qq.com/course/175018?taid=878303632337834&tuin=157aae4e" target="_blank" title="">腾讯C</a></h3>
                <ul class="di">
                  <li class="fee">
                    <i class="icon-ios"></i>
                    <span>9.00</span>
                  </li>
                  <li class="hits">
                    <span>2741人已学</span>
                  </li>
                </ul>
              </div>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <div class="img"><a href="https://www.bilibili.com/video/av75437389?from=search&seid=3113614819828990758" target="_blank">
                <img src="./sources/cource-a5.jpg" alt="">
              </a></div>
              <div class="exp">
                <h3><a href="https://www.bilibili.com/video/av75437389?from=search&seid=3113614819828990758" target="_blank" title="">腾讯数据结构</a></h3>
                <ul class="di">
                  <li class="fee">
                    <i class="icon-ios"></i>
                    <span>9.00</span>
                  </li>
                  <li class="hits">
                    <span>2741人已学</span>
                  </li>
                </ul>
              </div>
            </div>
          </li>
        </ul>
      </div>
    </div>
  </div>

  <div class="home-ad">
    <div class="wrap">
      <div class="img">
        <a href="https://v.douyu.com/author/rZwYYPy2owbK " target="_blank">
          <img src="./sources/home-ad.jpg" alt="">
        </a>
      </div>
    </div>
  </div>

  <div class="home-student">
    <div class="wrap">
      <div class="head">
        <h2>狄泰软件C/C++实战课程</h2>
        <p>市面上少有这么细致和深入的C/C++技术课程,真正满足企业需求 </p>
      </div>
      <div class="main clearfix">
        <div class=""></div>
        <div class="table">
          <div class="thead">
            <ul class="tr">
              <li>姓名</li>
              <li>备注</li>
            </ul>
          </div>
          <div class="tbody">
            <ul class="tr">
              <li>赵同学</li>
              <li>拿过深信服,中兴的offer,最终去了深信服,年薪19w</li>
            </ul>
            <ul class="tr even">
              <li>冯同学</li>
              <li>拿到努比亚offer,驱动协议开发</li>
            </ul>
            <ul class="tr">
              <li>李同学</li>
              <li>本科生(电子专业)拿到 9K 游戏服务器开发</li>
            </ul>
            <ul class="tr even">
              <li>苏同学</li>
              <li>一本,深圳市吉祥腾达科技有限公司,嵌入式软件开发工程师(8K)</li>
            </ul>
            <ul class="tr">
              <li>杨同学</li>
              <li>本科生,拿到11K金融行业方面的工作。由原来3.5K工作跳槽到11K</li>
            </ul>
            <ul class="tr even">
              <li>高同学</li>
              <li>研究生,拿下不少牛逼企业的offer,如 海信 海康 汇川技术 金山云 nxp</li>
            </ul>
            <ul class="tr">
              <li>朱同学</li>
              <li>迈科智能科技公司的offer</li>
            </ul>
            <ul class="tr even">
              <li>张同学</li>
              <li>一本,拿到5.5K嵌入式软件工程师(厦门)</li>
            </ul>
            <ul class="tr ">
              <li>吕同学</li>
              <li>(医疗设备)以前在小公司上班薪资是5k。跳槽到一家上市公司拿到15K</li>
            </ul>
            <ul class="tr even">
              <li>张同学</li>
              <li>研究生,拿到了烽火通信的offer,工资保密</li>
            </ul>
            <ul class="tr ">
              <li>王同学</li>
              <li>硕士,mtk驱动,乐道互动面试通过,腾讯面试通过</li>
            </ul>
            <ul class="tr even">
              <li>李同学</li>
              <li>滴滴   深信服   海康   中兴   招银网络科技,准备签滴滴,其他都拒了</li>
            </ul>
            <ul class="tr ">
              <li>袁同学</li>
              <li>拿到华为的offer,薪水保密</li>
            </ul>
          </div>
        </div>
      </div>
      <div class="online">
        <a href="tencent://message/?uin=360361550&Menu=yes" target="_blank">我要拿高薪</a>
      </div>
    </div>
  </div>

  <div class="home-case" id="homeCase">
    <div class="wrap">
      <div class="head">
        <h2>企业认可 学员信赖 才是良心教育机构</h2>
        <p>丰富的知识储备让学员在企业的工作中如鱼得水,独当一面</p>
      </div>
      <div class="main">
        <div class="list">
          <ul class="clearfix">
            <li class="item">
              <div class="cell">
                <div class="mode">
                  <div class="img">
                    <figure>
                      <img src="./sources/home-case-1.jpg" alt="">
                    </figure>
                  </div>
                </div>
              </div>
            </li>
            <li class="item">
              <div class="cell">
                <div class="mode">
                  <div class="img">
                    <figure>
                      <img src="./sources/home-case-2.jpg" alt="">
                    </figure>
                  </div>
                </div>
              </div>
            </li>
            <li class="item">
              <div class="cell">
                <div class="mode">
                  <div class="img">
                    <figure>
                      <img src="./sources/home-case-3.jpg" alt="">
                    </figure>
                  </div>
                </div>
              </div>
            </li>
            <li class="item">
              <div class="cell">
                <div class="mode">
                  <div class="img">
                    <figure>
                      <img src="./sources/home-case-4.jpg" alt="">
                    </figure>
                  </div>
                </div>
              </div>
            </li>
            <li class="item">
              <div class="cell">
                <div class="mode">
                  <div class="img">
                    <figure>
                      <img src="./sources/home-case-5.jpg" alt="">
                    </figure>
                  </div>
                </div>
              </div>
            </li>
            <li class="item">
              <div class="cell">
                <div class="mode">
                  <div class="img">
                    <figure>
                      <img src="./sources/home-case-6.jpg" alt="">
                    </figure>
                  </div>
                </div>
              </div>
            </li>
            <li class="item">
              <div class="cell">
                <div class="mode">
                  <div class="img">
                    <figure>
                      <img src="./sources/home-case-7.jpg" alt="">
                    </figure>
                  </div>
                </div>
              </div>
            </li>
          </ul>
        </div>
      </div>
    </div>
  </div>

  <div class="home-faq">
    <div class="wrap">
      <div class="head">
        <h2>常见问题</h2>
      </div>
      <div class="main">
        <ul class="list clearfix">
          <li class="item">
            <div class="cell">
              <h3>怎么收费</h3>
              <p>不到200元就可以感受课程质量和服务</p>
              <a href="javascript:;" target="_blank">查看详情</a>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <h3>狄泰软件可以分期付款吗?</h3>
              <p>可以进行分期付款,且支持花呗三期免息付款</p>
              <a href="javascript:;" target="_blank">查看详情</a>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <h3>狄泰软件学多久可以入职?</h3>
              <p>每个人情况不同,与其付出的时间和效率相关,和您之前学习情况有关。<br>如果您比较在意多久能够找到工作,可向老师咨询一下,根据您具体情况给出相关建议</p>
              <a href="javascript:;" target="_blank">查看详情</a>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <h3>狄泰软件的课程怎么学习?</h3>
              <p>主要是点播内容,最多支持三个设备自由切换观看,现在播放器支持windows,mac,ios,安卓。具体怎么操作的,可以咨询下老师</p>
              <a href="javascript:;" target="_blank">查看详情</a>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <h3>狄泰软件都有什么课程?</h3>
              <p>包含了C语言入门课程,C语言进价课程,C++深度解析课程,数据结构实战课程,qt实验分析教程,唐老师私房菜,Makefile详解,操作系统原理和实现,笔试题。</p>
              <a href="javascript:;" target="_blank">查看详情</a>
            </div>
          </li>
          <li class="item">
            <div class="cell">
              <h3>我适不适合转行软件开发?</h3>
              <p>每个人情况不同,我们认为并不是所有人都适合转行软件开发的,如果你的情况特殊,让你担心转行可能性,别冲动决定,不妨将你的情况跟老师聊聊,听听老师的建议</p>
              <a href="javascript:;" target="_blank">查看详情</a>
            </div>
          </li>
        </ul>
      </div>
      <div class="foot">
        <div class="online">
          <a href="http://" target="_blank">问问老师,你适合做软件开发吗?</a>
          <span>承诺不推销课程,不打扰用户,你可以放心咨询</span>
        </div>
      </div>
    </div>
  </div>

  <div class="footer" id="footer">
    <div class="wrap clearfix">
      <div class="sublog">
        <img src="./sources/logo.png" alt="" />
        <dl>
          <dd>联系地址:四川省成都市金牛区迎宾大道165</dd>
          <dd>联系电话:13327212778</dd>
        </dl>
      </div>
      <ul class="subcode">
        <li>
          <img src="./sources/rcode-1.jpg" alt="">
          <h3>加微信,一对一咨询</h3>
        </li>
        <li>
          <img src="./sources/rcode-2.jpg" alt="">
          <h3>微信公众号</h3>
        </li>
      </ul>
    </div>
  </div>

  <div class="bottomer" id="bottomer">
    <div class="wrap">
      <div class="copyright">
        <p>版权所有:狄泰软件 &nbsp;&nbsp;&nbsp; 备案号:<a href="http://www.beian.miit.gov.cn" target="_blank" title="备案号">蜀ICP备20001175</a></p>
      </div>
      <dl class="sublink">
        <dt>友情链接:</dt>
        <dd><a href="https://ke.qq.com/?tuin=157aae4e" target="_blank" title="腾讯课堂">腾讯课堂</a></dd>
        <dd><a href="https://chuanke.baidu.com/" target="_blank" title="百度传课">百度传课</a></dd>
        <dd><a href="https://chuanke.baidu.com/" target="_blank" title="百问网">百问网</a></dd>
        <dd><a href="http://www.openedv.com/" target="_blank" title="原子stm32">原子stm32</a></dd>
        <dd><a href="http://www.elecfans.com/" target="_blank" title="电子发烧友">电子发烧友</a></dd>
        <dd><a href="https://www.youkuaiyun.com/" target="_blank" title="优快云">优快云</a></dd>
        <dd><a href="https://c.runoob.com/compile/11" target="_blank" title="菜鸟在线编译">菜鸟在线编译</a></dd>
        <dd><a href="https://www.360dhf.cn" target="_blank" title="大黄蜂">大黄蜂</a></dd>
        <dd><a href="http://www.360dhf.cn/dhfplayer.html" target="_blank" title="播放器">播放器</a></dd>
      </dl>
    </div>
  </div>

  <div class="foxbar" id="foxbar">
    <dl class="list">
      <dd>
        <a href="javascript:;" class="wx"></a>
        <div class="drop">
          <ul class="rcode">
            <li>
              <img src="./sources/rcode-2.jpg" alt="">
            </li>
          </ul>
        </div>
      </dd>
      <dd>
        <a href="javascript:;" class="tel"></a>
        <div class="drop">
          <ul class="tel">
            <li>
              <p>TEL: 133-2721-2778</p>
            </li>
          </ul>
        </div>
      </dd>
      <dd>
        <a href="tencent://message/?uin=360361550&Menu=yes" class="online"></a>
      </dd>
      <dd>
        <a href="javascript:;" class="que"></a>
        <div class="prop">
          <div class="inner">
            <div class="fo">
              <a href="javascript:;" class="close">关闭</a>
              <h2>咨询我们</h2>
              <ul>
                <li>c/c++发展前景如何?</li>
                <li>课程是怎么学习的?</li>
                <li>选C/C++还是java?</li>
                <li>我的情况适合做软件开发吗?</li>
              </ul>
            </div>
            <div class="go">
              <a href="tencent://message/?uin=360361550&Menu=yes" target="_blank">马上咨询老师</a>
            </div>
          </div>
        </div>
      </dd>
      <dd>
        <a href="javascript:;" class="itop"></a>
      </dd>
    </dl>
  </div>

  <script src="./static/js/app.js"></script>
</body>
</html>
recv bytes = 22463
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值