
C/C++
零一匠
无线电 C语言 接收机
展开
-
C语言 互斥锁 (跨平台 Windows+linux)pthread实现
互斥锁的主要目的是防止多个线程同时访问同一资源。为什么不允许多线程同时访问同一资源呢。首先我们要对程序在运算的过程。假如计程序要对一个变量执行自加运算,那么过程是:首先程序到这个变量的内存中拷贝走变量值,然后交给cpu,cpu计算后将计算结果返回,然后重新保存在原来的位置,从而实现了这个变量的自加运算。打个比方,有一个变量“tmp”,它当前的值为5,两个线程几乎同时要访问这个变量。线程a想执行tm原创 2018-01-16 22:49:08 · 7650 阅读 · 0 评论 -
Windows C语言 UDP编程 server端(服务器、客户端)--初级(简单版)
UDP协议全称是用户数据报协议[1] ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使原创 2018-01-16 22:16:06 · 3859 阅读 · 2 评论 -
Windows C语言 Socket编程 server端(服务器)--初级(多客户端——初级版)
看过我的简单版的服务器代码的,会发现那段代码同一时间只能和一个客户端通信。这样的代码能力很小局限性很大。今天我来介绍一种多客户端的服务器代码。当然这段代码还是有问题的,至于是什么问题我会在代码后面说清楚。我的这个多客户端的代码核心思想是多线程。在基本的服务器的代码中简单加一些内容就可以了。在accept的后面,我们每接到一个客户端的连接请求,就会为这个客户端创建一个单独的线程,主线程继续循环监原创 2018-01-15 22:47:43 · 5505 阅读 · 2 评论 -
C语言的那些坑(C Primer Plus第六版 17.2程序释放链表bug)
C Primer Plus是一本很好的C语言书,里面的代码丰富详细,对初学者的晋升有很大帮助,但问题在于代码也都是人编写的,出现bug也是很正常的。善于发现bug也是一种能力。话不多说 实锤 下面是书中的源代码#include <stdio.h>#include <stdlib.h> /* has the malloc prototype */#include <strin原创 2017-11-30 10:25:14 · 1343 阅读 · 3 评论 -
C语言的那些坑(函数返回局部变量)
第二个坑 函数返回局部变量问题函数是可以返回局部变量的,比如看下面代码就是对的int fun(){ int a = 9; return a;}int main (){ printf("%d", fun()); return 0;}程序的运行过程是依照栈的规则,函数开始调用就是压栈,函数调用结束就是弹栈。函数弹栈之后该函数占用的栈内存自然就被释放掉了(重点是……原创 2017-11-29 10:54:51 · 2173 阅读 · 0 评论 -
C语言的那些坑(数组做参数计算大小问题)
零一匠 C语言的那些坑 之 第一个坑(数组做函数参数问题)看下面一对代码int hole(int numarray[]){ int len = sizeof(numarray) / sizeof(int); printf("hole函数计算的数组长度是%d\n", len);}int main(){ int len = 0; int array[11] = {0原创 2017-11-28 17:20:23 · 2076 阅读 · 0 评论 -
Windows C语言 Socket编程 client端(客户端)--断线重连版
了解了最基础的C语言客户端的编写流程,稍稍加以改动即可实现断线重连。 当服务器掉线时,客户端会以固定的频率不停的重连。原创 2017-11-04 17:21:36 · 6836 阅读 · 1 评论 -
Windows C语言 Socket编程 client端(客户端)--初级(简单版)
下面这段代码实现了最基本的client代码,只适用于初学者研究最基本的socket客户端的基本流程。 与本章配套的还有另外一篇文章“Windows C语言 Socket编程 server端(服务器)–初级(简单版)”原创 2017-11-04 16:49:34 · 6743 阅读 · 0 评论 -
Windows C语言 Socket编程 server端(服务器)--初级(简单版)
下面这段代码实现了最基本的server代码,值适用于初学者研究最基本的socket服务端的基本流程。实现了最基本的数据收发。由于是单线程的程序,所以实际功能具有一定的局限性。同一时间只能对一个客户端进行通信。若想实现多客户端连接需要引入多线程的概念。与本章配套的还有另外一篇文章“Windows C语言 Socket编程 client端(客户端)--初级(简单版)”原创 2017-11-04 15:45:11 · 4990 阅读 · 0 评论 -
C语言遍历windows目录文件 并对文件进行读写操作
C语言遍历windows目录 并对文件进行读写操作原创 2017-06-03 09:28:16 · 3214 阅读 · 2 评论 -
tcp粘包问题
**什么是粘包问题:**粘包问题的起因是socket的缓存机制。简而言之 粘包问题就是如何处理残包情况。再通俗一点就是,我需要一帧完整的数据有1024。我却只得到了512。处理办法也很简单——“等”。等它发来下一包数据,不管他发来多少数据,先拿来512,接到上次那512后面。凑成完整的数据帧。当然也有可能你发现这次来的数据不够512,那就有多少拿多少,先接到那帧数据的后面,然后再等,什么时原创 2017-06-12 17:20:16 · 575 阅读 · 0 评论 -
C语言 数组中某些元素的和为某一定值 找出所有组合
C语言 数组中某些元素的和为某一定值 找出所有组合题目:给出如下集合 {19061, 142852, 859322, 122058, 10424, 2274, 2274, 527099, 5723, 6408, 8652, 8652, 50435, 245580, 921051, 734785, 1614292, 617546, 4169671, 125437} 其中某些元素的和6023925...原创 2018-08-09 15:12:31 · 3810 阅读 · 2 评论