网络编程
文章平均质量分 53
九阈
进厂了
展开
-
Linux C 互斥锁的使用
互斥锁的作用保护共享数据: 在并发机制的情况下,有时候会有多个线程同时访问同一片数据,为了保护数据操作的准确性就需要通过加锁来进行保护。保持操作互斥: 可能一个程序会有多个操作,但是同一个时间只能有一个操作被执行,例如a/b两个操作,如果a被执行,b就不能被执行,同理b被执行,a就不能执行操作函数pthread_mutex_t lock; /* 互斥锁定义 */pthread_mutex_init(&lock, NULL); /* 动态初始化, 成功返回0,失败返回非0 */pthrea转载 2021-12-17 19:49:11 · 282 阅读 · 0 评论 -
C多线程编程---条件变量
1、原理假设我们需要解决这样一个问题:一个列表记录需要处理的任务。一个线程往此列表添加任务,一个线程processTask处理此列表中的任务。这个问题的一个关键点在于processTask怎么判断任务列表不为空。一般有两种方法:一. processTask线程不断查询任务列表是否为空。二. 当列表不为空的时候,通知processTask处理相关任务。第一种方法往往是在一个while循环中判断列表是否为空,如果为空则睡眠一段时间,如果不为空那么把任务取出来并加以处理。此方案需要一个睡眠时间的平衡点如果转载 2021-12-17 19:33:06 · 1870 阅读 · 1 评论 -
C语言线程基础
线程的概念一个正在运行的函数posix线程是一套标准,而不是实现openmp线程线程标识: pthread_ tpthread_equal()int pthread_equal(pthread_t t1, pthread_t t2);/* 功能:比较两个线程ID是否相等。pthread_self()获取调用线程IDpthread_create()int pthread_create(pthread_t *thread tidp, const pthread_attr_t *attr原创 2021-12-17 19:11:55 · 1312 阅读 · 0 评论 -
tcp单向通信
client.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<arpa/inet.h>int main(int argc, char *argv[]){ //1 建立通信套接字 int fd = socket(AF_INET,SOCK_STREAM,0); if(fd == -1) { printf("f...原创 2021-12-10 17:08:15 · 2342 阅读 · 0 评论 -
socket编程:信号驱动式I/O实现
信号驱动式l/0的本质就是:进程预先告知内核当某个描述符发生事件时,内核会向该进程发送SIGIO信 号量通知进程,进程可在信号处理函数中进行处理。进程可以通过fcntl打开O_ ASYNC标志或ioctl打开FIOASYNC标志来通知内核,二者的区别是一些系统不支持fcntl,所以应尽量使用ioctl。对于socket产生SIGIO的条件:TCP套接字:1.监听套接字上有新连接请求完成2某个断连请求发起3.某个断连请求完成4.数据到达套接字5数据已从套接字发送走(输出缓冲区有空闲空间)6.转载 2021-12-09 17:10:52 · 245 阅读 · 0 评论 -
UDP单向通信
服务端server.c#include<stdio.h>#include<stdlib.h>//exit #include<sys/socket.h>//socket#include<netinet/in.h>//sockaddr_in#include<arpa/inet.h>//htons inet_addr#include<string.h>#include<unistd.h>int main(int原创 2021-12-08 20:15:47 · 1758 阅读 · 0 评论 -
c语言头文件time.h
#include <stdio.h>#include <time.h> void main(){ time_t sec; //typedef long time_t struct tm * curTime; sec = time(NULL); //获取时间,从1970.1.1到现在的秒数,也可以写成 time(&sec); curTime = localtime(&sec); //把sec转换为当地时间,存于时间结转载 2021-12-05 17:35:00 · 1371 阅读 · 0 评论 -
两台Linux虚拟机socket通信(Version 1.0)
下面的两个程序实现了这样的功能: 客户端每1s产生一个随机数, 之后将产生的随机数转为字符串类型, 发送至服务端; 服务端在接收到数据后通过printf()函数将这个随机数显示到终端. 这个程序的思路可用于PC机和ARM开发板间的数据通信.// server.c 服务端#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <stri转载 2021-12-05 17:31:51 · 772 阅读 · 0 评论