网络编程核心概念与模式
1、问题
如何进行网络编程?
2、网络编程的本质
使用操作系统提供的接口函数,使得应用程序具备收发网络数据的能力。
- 网络接口在代码层面是操作系统提供的函数
- 网络编程只是一系列系统函数的花式玩法
- 应用程序通过网络接口使用操作系统的联网能力
- 网络编程是特定领域的C语言程序设计
3、网络编程核心概念
- 协议:为进行数据通信而预定义的数据规则
- 地址:网络通信中的用于标识设备的整数值
- 端口号:
- 设备为收发数据而指定的数值,用于标识具体连接
- 可理解为:设备中用于网络通信的数据通道
- 角色
- 服务端:等待连接的设备
- 客户端:发起连接的设备
- 网络知识充电站
- 网址就是IP地址吗?URL是什么?域名又是什么?
- 网址不是IP地址,是网络信息资源的地址(如:具体网页的地址),即:URL
- 域名是IP地址的别名,多个域名可指向同一个IP地址
- 协议一定是看不懂的二进制数据吗?
- 协议是一种约定,即:预先定义的规则
- 协议可以基于文本定义,也可以基于二进制定义
- 小端系统
- 采用小端模式的系统,即:数据低字节放在内存低地址中
- 大端系统
- 采用大端模式的系统,即:数据低字节放在内存高地址中
- 网络字节序
- 网络字节顺序采用大端模式,所以:在小段系统需要做字节序转换。
- 网址就是IP地址吗?URL是什么?域名又是什么?
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">查看更多 ></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>版权所有:狄泰软件 备案号:<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