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前端篇之作者功能开发(一)

一、EasyMock生成作者数据 

(一)获取所有数据 

新建get请求接口 http://192.168.35.16:7300/mock/60ef1eb22475f419e941cf61/authors

{ "code": 200, "message": "获取成功", "data|10": [{ "id|+1": 10, "username": "@ctitle", "email": "@email" }] }

使用测试工具获取数据: 

(二)新增一条数据 

新增post请求接口 http://192.168.35.16:7300/mock/60ef1eb22475f419e941cf61/author

{ "code": 200, "message": "新增成功" }

二、API接口调用 

(一)获取所有数据 

在src目录中新建api目录,然后新建authors.js文件: 

其内容为:

import request from "@/utils/request"; export function getAuthors() { return request({ url: "/authors", method: "get" }); }

然后在views/authors/index.vue文件中调用接口、获取数据、进行渲染,其中渲染的 表格模板

<template> <el-table :data="authorsList" border style="width: 100%"> <el-table-column prop="id" label="ID" width="180"> </el-table-column> <el-table-column prop="username" label="姓名" width="180"> </el-table-column> <el-table-column prop="email" label="邮箱"> </el-table-column> </el-table> </template> <script> import { getAuthors } from "@/api/authors"; export default { data() { return { authorsList: [] } }, name: "index", created() { this.getAuthors(); }, methods: { async getAuthors() { const res = await getAuthors(); let {code, message, data} = res.data console.log(code,message,data) if (code == 200) { this.authorsList = data; this.$message(message); } } } }; </script> <style scoped> </style>

显示效果为:

(二)新增数据 

在authors.js文件中:

export function addAuthor(data) { return request({ url: "/author", method: "post", data: data }) }
在views/authors/index.vue文件中进行调用,首先需要使用 dialog form对话框。  

1、将添加按钮、弹出框放在合适的地方 

注意的是弹出方法需要自己实现,因为需要重置表单,清空数据,需要注意的是: 

  • el-form 使用ref属性 
  • el-form-item 指定prop,否则重置不生效
<template> <div> <el-row style="margin-bottom: 5px"> <el-button type="primary" @click="handleAdd">添加作者</el-button> </el-row> <!-- <el-row> <el-table :data="authorsList" border style="width: 100%"> <el-table-column prop="id" label="ID"> </el-table-column> <el-table-column prop="username" label="姓名"> </el-table-column> <el-table-column prop="email" label="邮箱"> </el-table-column> </el-table> </el-row> --> <el-dialog title="添加作者" v-model="dialogFormVisible"> <el-form ref="postForm" :model="form"> <el-form-item label="姓名" :label-width="formLabelWidth" prop="username"> <el-input v-model="form.username" autocomplete="off"></el-input> </el-form-item> <el-form-item label="邮箱" :label-width="formLabelWidth" prop="email"> <el-input v-model="form.email" autocomplete="off"></el-input> </el-form-item> </el-form> <template #footer> <span class="dialog-footer"> <el-button @click="dialogFormVisible = false">取 消</el-button> <el-button type="primary" @click="addData">确 定</el-button> </span> </template> </el-dialog> </div> </template>

在确定按钮中绑定addData方法。 

2、添加数据属性、方法

显示的效果: 



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

此博客中的热门博文

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

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

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