![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
实用的技巧
在编程的过程中,遇到一些技术上的小问题,已解决的来记录一下,方便使用
ZHOUJIforever
投资未来,忠于现实。
展开
-
简述socket编程中,udp协议服务器和客户端调用的API的过程。
简述socket编程中,udp协议服务器和客户端调用的API的过程。客服端:#include <stdio.h>#include <sys/socket.h>//socket#include <netinet/in.h>//struct sockaddr_in#include <string.h>//memset#include <arpa/inet.h>//htonsint main(int argc, char const *a原创 2021-09-29 15:16:29 · 504 阅读 · 0 评论 -
获取当前网段的IP、MAC,并对其进行欺骗
获取当前网段的IP、MAC,并对其进行欺骗这里所说的欺骗,指的是ARP应答欺骗:正常情况下:一个软件在不同网段之间传输数据的时候,第一次并不知道这个数据包怎么传输过去,这个时候,就会以广播的形式,发送一个ARP请求包,如果发现了相关的网络IP,则会返回一个ARP的应答包,其他的IP也接收到了这个ARP就会将这个包丢弃。那么ARP应答包里放的是什么呢?其实就返回的最重要的就是一个MAC地址,当获得了这个MAC那么就能往下继续传递数据包。注意并不是每一次发数据包都会发送这个ARP的请求包,只要一次走通之原创 2021-08-27 22:23:48 · 273 阅读 · 0 评论 -
使用线程完成TCP服务器
使用线程完成TCP服务器tcp特点:有链接,效率低,安全(丢包重传)步骤:创建套接字设置端口复用绑定监听accept取出队列中的第一个客服端创建线程,对每一个客服端同时进行收发消息关闭套接字#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include原创 2021-08-22 21:12:00 · 197 阅读 · 0 评论 -
UDP协议实现交流通信
UDP协议实现交流通信1.创建套接字2.地址绑定3.循环的接收消息和发送消息4.关闭套接字#include <stdio.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include &l原创 2021-08-22 21:00:32 · 124 阅读 · 0 评论 -
UDP协议实现客服端
UDP协议实现客服端步骤:创建套接字指明接收方的地址发送消息关闭消息#include <stdio.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <unistd.h>int main(int argc,char *argv[]){ //创建套接字 int sockfd=socket(AF_INET,SOCK_原创 2021-08-22 20:46:50 · 93 阅读 · 0 评论 -
TCP客服端实现
TCP客服端实现步骤:创建套接字连接服务器收发数据关闭套接字#include <stdio.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <sys/types.h>#include <string.h>#include <unistd.h>int main(){ int so原创 2021-08-22 20:41:38 · 82 阅读 · 0 评论 -
QT中文件的读写(注册与登录)
注册按键功能:思路:判断输入的内容有无空格判断是否重名(打开文件,从中查找)写入文件需要包含的头文件#include <QMessageBox>#include <QDebug>#include <QByteArray>#include <QString>connect(ui->pushButton,&QPushButton::clicked,[=](){ QString name,pass,pass2原创 2021-07-24 20:59:47 · 1930 阅读 · 3 评论 -
使用有名管道完成单机QQ(mkfifo)
有名管道有名管道的创建有名管道本质上是一个文件,可以在文件系统中查找到,但是管道的内容是保存到内存的int ret = mikfifo("./a.txt",0666);if(0 == ret){ printf("创建成功!\n");}“a.txt”是创建的有名管道 "./"是在当前目录下面后面的权限给的是只写权限,可以根据自己的需要进行更改2 有名管道的使用使用的时候要先打开这个有名管道写:int fd=open("./fifo_cmd",O_WRONL原创 2021-07-30 23:01:02 · 134 阅读 · 0 评论 -
变量的分区
在做面试题的时候,有一道题是这样的:问下面的变量哪一个是分配在BSS段上?char arr[10]; //全局数组int i =0; //全局变量static int a =0; //静态全局变量void main(){ char arr_min[10]; //局部数组}分析每一个的变量的存储空间以及特点首先呢,内存一般分为五个区1.堆区2.栈区3.全局区4.文字常量区5.代码区全局区的变量即使没原创 2021-07-16 20:43:01 · 316 阅读 · 0 评论 -
使用消息队列,完成单机QQ功能(msgsnd)
消息队列第一步创建key值使用ftok()函数来获得唯一的信息队列标识符-------------------------------------key_t key = ftok("./",2021);if(-1 == key){ perror("ftok");}创建或者打开消息队列创建消息队列,如果已经有了这个队列,那么就是打开 int msgid=msgget(key,IPC_CREAT|0666); IPC_CREAT:如果没有那么就创建 if(-1 == msgid原创 2021-07-30 21:57:42 · 280 阅读 · 1 评论 -
qt使用自带的数据库sqlite(登录,注册)
qt使用sqlite创建数据库 //创建一个数据库 db = QSqlDatabase::addDatabase("QSQLITE");//添加驱动 db.setDatabaseName("stu.db");//数据库的名字2.打开数据库 bool ok = db.open();//如果不存在就创建,存在就打开 if(ok) { qDebug()<<"数据库创建(打开)成功了"; } else {原创 2021-07-24 22:35:44 · 4138 阅读 · 0 评论 -
Linux中使用C语言实现cp功能
Linux中使用C语言实现cp功能#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <string.h>int main(int argc, char *argv[]){ int fd, fd2; fd = open(argv[1], O_RD原创 2021-07-27 20:31:50 · 252 阅读 · 0 评论 -
用C语言输出当前文件夹中所有的文件名opendir
用C语言输出当前文件夹中所有的文件名使用opendir()#include <stdio.h>#include <dirent.h>#include <sys/types.h>int main(){ //打开一个文件目录,opendir中行目录的名字 DIR * dir = opendir("./"); //成功:返回指向该目录的结构体目录 //失败:返回NULL if(dir == NULL) { printf(原创 2021-07-27 20:26:23 · 3035 阅读 · 0 评论