简单的多线程数据传输

本文介绍了一个简单的多线程数据传输任务,主进程创建四个线程,其中三个线程向最后一个线程发送数据,最后一个线程负责接收并打印。讨论了makefile中常用变量,并展示了代码结构,包括common.h, common.c, main.c, rt.c, st1.c, st2.c, st3.c等文件的作用。" 139325070,10282337,华为OD机试题:整型数组按个位值排序的C++、Java、Python解法,"['华为od', 'C++', 'Java', 'Python']
摘要由CSDN通过智能技术生成

说明

为创建一份小型的工程代码,自己想出一个简单的数据传输任务。
主进程创建四个线程,st1,st2,st3,rt,让前三个线程向最后一个线程灌包,最后一个线程接收数据包。
目的IP: 10.21.100.152
目的端口:9001
各个进程被创建后立即进行相应的工作,灌包或者收包。rt接收到数据包后打印出相应的信息。

makefile

工程文件的编译会接触到makefile,下面是总结的常用的makfile变量

变量 意义
$* 不包含扩展名的目标文件名称。
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$< 第一个依赖文件的名称。
$? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@ 目标的完整名称。
$^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。
$% 如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
AR 静态库打开包命令的名字,default:ar
ARFLAGS 静态库打开包命令的选项,default:rv
AS 汇编器的名字,default: as
ASFLAGS 汇编器的选项
CC C编译器的名字,default: cc
CFLAGS C编译器的选项
CXX c++编译器的名字,default: g++
CXXFLAGS c++编译器的选项
CPP C预处理器的名字,default: $(CC) -E
CPPFLAGS C预处理器的选项
LD 链接器的名字, default: 1d
LDFLAGS 链接器的选项
TARGET_ARCH 和目标平台相关的命令行选项
OUTPUT_OPTION 输出的命令行选项,default: -o $@
LINK.o 把.o文件链接在一起的命令行,default: $(CC) $(LDFLAGS) $(TARGET_ARCH)
LINK.c 把 .c 文件链接在一起的命令行, default: $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
LINK.cc 把 .cc 文件(C++源文件)链接在一起的命令行, default: $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
COMPILE.c 编译.c文件的命令行, default: $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cc 编译 .cc 文件的命令行, default: $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
RANLIB 静态库的符号索引表
CROSS_COMPILE 编译器前缀
ARCH CPU体系结构

另外一些可能用到的:
STRIP: 去空格函数,去除开头和结尾出现的空字符
addprefix: 加前缀函数

$(addprefix <prefix>, <name-1>, <name-2>...<name-n>)
该函数将前缀 <prefix> 加到各个 <name> 的前面去。

代码结构

这里写图片描述
图中的.a文件和.d文件是编译后产生的。
.a文件是静态库文件,.d文件为源文件的依赖关系的完整规则。

code

common.h

#ifndef COMMON_H
#define COMMON_H

#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sched.h>
#include <unistd.h>
#include <sys/types.h>
#include <malloc.h>
#include <signal.h>

#define Len 20
#define Num 10
#define TASK_JOIN 1

typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef int INT32;
typedef struct msg{
    UINT8 context[Num][Len];
}Msg;

pthread_t g_st1;
pthread_t g_st2;
pthread_t g_st3;
pthread_t g_rt;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值