随笔分类 -  C语言学习笔记

嵌入式开发
摘要:int main(int argc, char *argv[]) { unsigned char data[PACKET_MAX_LEN]; int data_len = 0; int socket_fd = -1; //char test_flag = 0; struct sockaddr_in 阅读全文
posted @ 2016-12-28 11:47 丁培飞 阅读(462) 评论(0) 推荐(0)
摘要:编译没有警告,没有错误,运行就打印 段错误 (核心已转储) 网上找了一下,都是各种问题,都推荐用gdb 调试解决,咱也来趁机学习gdb一下。 gcc+gdb)输入命令行 运行 sudo apt-get install build-essential build-essential包含gcc和gdb等 阅读全文
posted @ 2016-12-27 09:54 丁培飞 阅读(4322) 评论(0) 推荐(0)
摘要:UDP数据通讯原理 UDP数据通讯分服务端(软件)和客户端端: 服务端(软件)(服务器)先运行,服务端,不需要事先知道客户端IP和port 客户端(软件)(客户端机器)后运行,一定是客户端先给服务端发包,客户端一定先知道服务端的IP和port UDP通信实现 1. 头文件 #include <sys 阅读全文
posted @ 2016-12-26 17:59 丁培飞 阅读(855) 评论(0) 推荐(0)
摘要:由于UDP通信不需要事先建立连接,因此不需要TCP中的connect函数。 服务器端的步骤如下: 1. socket: 建立一个socket 2. bind: 将这个socket绑定在某个端口上(AF_INET) 3. recvfrom: 如果没有客户端发起请求,则会阻塞在这个函数里 4. clos 阅读全文
posted @ 2016-12-26 17:54 丁培飞 阅读(389) 评论(0) 推荐(0)
摘要:1.在c语言中,函数,声明,调用的类型务必是一致的, 2.主机id:指ip地址最后一个字节,例如,203.86.61.106, >106指主机id, 3,端口号:6789,换成16进制1A85 ,拆分 到两个字节中,指 >1A 85;char类型:1字节 >8位, 阅读全文
posted @ 2016-12-22 18:24 丁培飞 阅读(240) 评论(0) 推荐(0)
摘要:Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。 Linux的man手册共有以下几个章节: 代號 代表內容 1 使用者在shell中可以操作的指令或可执行档 2 系統核心可呼叫的函数与工具等 3 一些常用的函数(function)与函数库(libra 阅读全文
posted @ 2016-12-21 17:02 丁培飞 阅读(737) 评论(0) 推荐(0)
摘要:1.linux 系统c语言生成.o文件, >gcc -m64 -c -fPIC test.c -o test.o2.linux 系统c语言生成.so文件, >gcc -shared -fPIC libthitudp.so -o test.o -m643.查看生成的文件是否为64位执行文件 >命令:f 阅读全文
posted @ 2016-12-21 14:15 丁培飞 阅读(1089) 评论(0) 推荐(0)
摘要:动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test. 阅读全文
posted @ 2016-12-20 14:36 丁培飞 阅读(3135) 评论(0) 推荐(0)
摘要:C程序中,用于实现算法和数据结构 (比如栈和相关的操作)。在同一个程序中,还有用于测试的main()函数,结构体定义,函数原型,typedef等等。 这样的做法非常不“环保”。算法的实际运用和算法的实现混在一起。如果我想要重复使用之前的源程序,必须进行许多改动,并且重新编译。最好的解决方案是实现模块 阅读全文
posted @ 2016-12-20 14:11 丁培飞 阅读(1317) 评论(0) 推荐(0)
摘要:一、概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。 UDP:用户数据报协议。UDP是 阅读全文
posted @ 2016-12-14 00:26 丁培飞 阅读(570) 评论(0) 推荐(0)
摘要:Linux下的Socket编程大体上包括Tcp Socket、Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列。 TCP Socket 基于TCP 阅读全文
posted @ 2016-12-14 00:22 丁培飞 阅读(347) 评论(0) 推荐(0)
摘要:#pragma是编译器指示字,用域指示编译器完成一些特定动作, #pragma所定义的很多指示字是编译器和操作系统特有的 #pragma在不同的编译器间是不可移植的 预处理器将忽略它不认识的#pragma指令 两个不同的编译器可能以两种不同的方式解释同一条#pragma指令 用法;#pragma p 阅读全文
posted @ 2016-12-06 09:13 丁培飞 阅读(274) 评论(0) 推荐(0)
摘要:#error message 注:message不需要用双引号包围, #error 编译指示字用于自定义程序特有的编译错误消息类似的, #warning用于生成编译警告,但不会停止编译。 在linux终端定义 gcc -Dadroid40 test.c 在终端定义常量方法,后执行a.out,结果正常 阅读全文
posted @ 2016-12-05 22:56 丁培飞 阅读(725) 评论(0) 推荐(0)
摘要:linux下getsockopt和setsockopt详解及测试 NAME 名字 getsockopt, setsockopt - get and set options on sockets 获取或者设置套接字的选项 SYNOPSIS 函数原型 参数: sock:将要被设置或者获取选项的套接字。 阅读全文
posted @ 2016-12-01 23:52 丁培飞 阅读(8076) 评论(0) 推荐(0)
摘要:【 getsockopt/setsockopt系统调用 功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的 阅读全文
posted @ 2016-12-01 23:47 丁培飞 阅读(8568) 评论(0) 推荐(0)
摘要:头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, const char * mode); 【参数】path为包含了路径的文件名,mode为文件打开方式。 mode有以下几 阅读全文
posted @ 2016-12-01 23:42 丁培飞 阅读(5523) 评论(0) 推荐(0)
摘要:Linux 套接字的用户接口. 这个 BSD 兼容套接字是介于用户进程与内核网络协议栈之间的统一接口, 各协议模块属于不同的 协议族 ,如 PF_INET, PF_IPX, PF_PACKET 和 套接字类型 ,如 字节流(SOCK_STREAM) 或 数据报(SOCK_DGRAM). 关于协议族和 阅读全文
posted @ 2016-12-01 23:40 丁培飞 阅读(1600) 评论(0) 推荐(0)
摘要:1)指针基础: 既然程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段存储空间, int main() { int i=5; int *p=&i; printf("%d,%08x\n",i,p); *p=10; printf("%d,%08x\n",i,p); return 阅读全文
posted @ 2016-11-30 00:30 丁培飞 阅读(275) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2016-11-28 13:29 丁培飞 阅读(2) 评论(0) 推荐(0)
摘要:在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, uns 阅读全文
posted @ 2016-11-28 12:36 丁培飞 阅读(66536) 评论(2) 推荐(3)