c语言之Linux网络开发

一、网络编程预备知识 socket IP地址 端口号 字节序 (一)socket 是一个编程接口 是一种特殊的文件描述符 (everything in Unix is a file) 并不仅限于TCP/IP协议 面向连接 (Transmission Control Protocol - TCP/IP) 无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX) (二)socket类型 1、流式套接字(SOCK_STREAM) 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 2、数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。 3、原始套接字(SOCK_RAW) 可以对较低层次协议如IP、ICMP直接访问。 (三)socket的位置 (四)IP地址 IP地址是Internet中主机的标识: Internet中的主机要与别的机器通信必须具有一个IP地址 IP地址为32位(IPv4)或者128位(IPv6) 每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由 表示形式:常用点分形式,如202.38.64.10,最后都会转换为一个32位的无符号整数 (五)端口号 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别 TCP端口号与UDP端口号独立 端口号一般由IANA (Internet Assigned Numbers Authority) 管理 众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用) 注册端口:1024~49150 动态或私有端口:49151~65535 (六)字节序 不同类型CPU的主机中,内存存储多字节整数序列有两种方法,称为主机字节序(HBO): 小端序(little-endian) - 低序字节存储在低地址 将低字节存储在起始地址,称为“Little-Endi...

Vue前端篇之项目布局设计

一、文件初始化 

移除一些没有用的组件或者文件: 

1、注释掉App.vue中的两个路由 

2、注释掉router/index.js文件中无用的路由 

二、layout 

1、映射路由 

路由配置,在router/index.js文件中:

import { createRouter, createWebHistory } from "vue-router"; // import Home from "../views/Home.vue"; import Layout from "../layout"; import Authors from "../views/authors"; import Books from "../views/books"; import Publishers from "../views/publishers"; const routes = [ { path: "/", name: "layout", component: Layout, }, //进行路由配置,这些子路由都会在layout父组件中的AppMain组件中被渲染 { path: "/", name: "layout", component: Layout, children:[ //作者管理 { path: "/authors", component: Authors, }, //出版社管理 { path: "/publishers", component: Publishers, }, //书籍管理 { path: "/books", component: Books, } ] }, // { // path: "/about", // name: "About", // // route level code-splitting // // this generates a separate chunk (about.[hash].js) for this route // // which is lazy-loaded when the route is visited. // component: () => // import(/* webpackChunkName: "about" */ "../views/About.vue"), // }, ]; const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes }); export default router; const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes }); export default router;

2、页面布局 

参考: 布局
  • 头部、左侧、主体组件 

在layout目录下新建components目录,然后新建头部、左侧、主体部分组件的文件夹,最后后新建对应的文件: 

AppHeader/index.vue
<template> <el-header class="header">Header</el-header> </template> <script> export default { name: "index" }; </script> <style scoped> </style>
    
AppMain/index.vue
<template> <el-main class="main"> <router-view></router-view> </el-main> </template> <script> export default { name: "index" }; </script> <style scoped=""> </style>
SideBar/index.vue 参考:左侧导航栏
<template> <el-aside class="aside"> <el-menu :router="true" active-text-color="#ffd04b" background-color="#545c64" class="el-menu-vertical-demo" close="handleClose" default-active="/authors/" open="handleOpen" text-color="#fff"> <el-menu-item index="/authors/"> <i class="el-icon-menu"></i> <template title="">作者管理</template> </el-menu-item> <el-menu-item index="/publishers/"> <i class="el-icon-menu"></i> <template title="">出版社管理</template> </el-menu-item> <el-menu-item index="/books/"> <i class="el-icon-menu"></i> <template title="">书籍管理</template> </el-menu-item> </el-menu> </el-aside> </template> <script> export default { name: "index" }; </script> <style scoped=""> </style>
  • layout/index.vue 
在布局中引入对应的组件即可。参考 布局
<template> <div> <appheader> <sidebar> <appmain> </appmain></sidebar></appheader></div> </template> <script> import AppHeader from "./components/AppHeader"; import AppMain from "./components/AppMain"; import SideBar from "./components/SideBar"; export default { name: "index", components: { AppHeader, AppMain, SideBar }, methods: { handleOpen(key, keyPath) { console.log(key, keyPath); }, handleClose(key, keyPath) { console.log(key, keyPath); } } }; </script> <style scoped=""> .header { background: #4e5d70; } .main { position: absolute; top: 65px; bottom: 0px; left: 300px; right: 0px; background: white; } .aside { position: absolute; top: 65px; width: 200px; bottom: 0px; background: rgb(84 92 100); } </style>

显示 :



更多文章合集前往: 往期精彩文章

此博客中的热门博文

玩转虚拟机系列之如何搭建虚拟机

玩转虚拟机系列之远程工具

玩转虚拟机系列之如何高效创建虚拟机