最近做了一下linux C网络方面的项目,简单的写了一下服务器于客户端之间上传,下载文件,利用并发服务器,可以实现多个客户端同时上传,下载。
写的不好,还请大神多多指教!多的不说,一切都在代码中,部分代码如下所示:/*server.c */ 服务器端
void *recvmation(void *arg) //接收客户端发送过来的信息,线程
{int my_fd = *((int *)arg);int n;while(1){ n = recv(my_fd, (struct regis *)&RecvReg, sizeof(RecvReg), 0);if(n ...
一:前言进行linux下C/C++服务端后台开发的都知道,需要跟各种头文件打交道。比如使用printf函数则需要引用#include <stdio.h>,使用STL的map容器则要#include <map>,使用socket网络编程则要#include <sys/socket.h>,那么我考考你uint32_t是在哪个头文件定义的呢?sleep函数又是在哪个头文件?open和close是在同一个头文件里吗?是不是有点一时半会答不上来,有没有好的方法能梳理头文件呢,把头文件进行分门别类呢?答案是可以的...
1. 基本知识在Linux 是一个多用户多任务的操作系统。同时会有不同的用户,向操作系统发出各种命令。
命令通过程序执行。在执行的过程中,就会产生进程。这里我们讲程序和进程之间的关系,我们可以这样理解: 程序是一些以文件的形式存储在操作系统文件系统中,包含可执行代码的静态文件。这些文件在没有被运行的时候,和其他的Word、Excel文档没有本质的区别。
当程序被执行的时候,程序要被读入到内存中并且被执行。在执行的过程中...
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <unistd.h>
/*DIR *opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针struct __dirstream { void *__fd; char *__data; 实施int __entry_data; char *__ptr; int __entry_ptr; size_t __allocation; size_t __size; __libc_lock_d...
如何度量进程的运行时间?
可以用times函数获取进程的墙上时钟时间,用户CPU时间,系统CPU时钟时间。墙上时钟时间墙上时钟时间 wall clock time: 又简称时钟时间,从进程开始运行到结束,系统时钟走过的时间(时钟数),包含了进程阻塞、等待的时间。
每秒钟嘀嗒数, 可通过sysconf(_SC_CLK_TCK)获取用户CPU时间用户CPU时间:用户进程在用户态执行时间。系统CPU时间系统CPU时间:用户进程在内核态执行时间。三者之间关系时钟时间 ...
(一)Android?Andoid是一个在linux上的,多用于移动终端的操作系统,不是类似redhat的服务器OS,也不是类似Windows的标准桌面OS,只是一种手持设备的较为简单的图形OS,Android应用程序使用Java开发。Android从linux kernel开出的分支,比如我的华为手机android是4.3,使用的linux kernel是3.4。android代码已经被linux kernel社区剔除。android由于继承了linux kernel代码,根据linux GPL规定即对开源代码的任何修改,都必须开源...
1/* timeclnt.c - a client for timeserv.c2 * usage: timeclnt hostname portnumber3*/ 4 #include <stdio.h>5 #include <sys/types.h>6 #include <sys/socket.h>7 #include <netinet/in.h>8 #include <netdb.h>910#define oops(msg) {perror(msg); exit(1); }
11#define oopsn(msg, x) {perror(msg); exit(x);};
12int main(int argc, char* argv[]) {
13struct sockaddr_in servadd;
14struct hostent *hp;
15int...
/***************************************************************************** Linux kernel scriptes bin2c "\x" * 声明:* 早上在阅读Linux kernel scriptes中的源代码的时候发现bin2c的源代码,* 于是打算看一下,结果发现"\x"的写法,于是查了点资料,看了一下它的用法。** 2015-12-29 深圳 南山平山村 曾剑锋************************************...
1.问:知道程序执行时间我们能够做什么?在《C++应用程序性能优化》一书中,假设大家读过相信大家一定对性能优化这一块很上心,文中总是对优化前后的时间对照很直观给我们一个感受。那么我们怎样利用C语言提供的库函数获取一个应用程序的各阶段的执行效率,通过数据分析出该程序的瓶颈而且做出对应的优化。本文给大家解说的clock()函数。2.我们首先看一看C/C++标准文档对于clock()函数的解说3.函数原型 clock_t clock (void);函数...
dgrecv.c 1/****************************************************************2 * dgrecv.c - datagram receiver3 * usage: dgrecv portnum4 * action: listens at the specfied port and reports messages5*/ 6 #include <stdio.h>7 #include <stdlib.h>8 #include <sys/types.h>9 #include <sys/socket.h>
10 #include <netinet/in.h>
11 #include <netdb.h>
12 #include <string.h>
13 #include <ar...
函数原型pid_t fork(void);fork的奇妙之处在于它被调用一次,却返回两次,它可能有三种不同的返回值:
1、在父进程中,fork返回新创建的子进程的PID
2、在子进程中,fork返回0;
3、如果出现错误,fork返回一个负值。用途:
1、一个进程希望复制自身,从而父子进程能同时执行不同段的代码。
2、进程想执行另外一个程序#include <sys/types.h>#include <unistd.h>int main(){pid_t pid;/*此时仅有一个进程*/pid = fork();/*此时已...
p { margin-bottom: 0.25cm; line-height: 120% }Linux系统中提供了系统调用函数open()和close()用于打开和关闭一个存在的文件int open(const char *pathname,int flags)int open(const char *pathname,int flags,mode_t mode)int open(const char *pathname,mode_t mode)其中flag代表文件的打开方式O_RDONLY: 以只读方式打开文件O_WRONLY:以只写的方式打开文件O_RDWR:以读写的方式打开文件O_CREAT:若打开的文件不存在,则创建该...
对数组排序,使用指针但不使用第三方变量 1 #include <stdio.h> 2 3int main(int argc, constchar *argv[])4{5int a[10]={1,5,7,99,22,44,66,77,88,10};6 7int *p,*q,i,j;8 9 p=q=a;
1011for(i=0;i<10;i++){
1213for(j=0;j<10;j++){
141516if(*p<*q){
1718 (*p)^=(*q);
19 (*q)^=(*p);
20 (*p)^=(*q);
2122 }
23 q++;
24 }
25 p++;
26 ...
预处理#和##是两个预处理运算符(注意不是C语言表达式的运算符),#后接形参(中间可以空格),用于创建字符串字面值;##用于连接两个形参。函数式宏定义也可以带可变参数,同样是用…表示可变参数,宏定义中的可变参数的部分用_VA_ARGS_表示。如:#define showlist(…) printf(#_VA_ARGS_)取消宏定义用#undef ,取消未定义的宏不算错误。对条件预处理的编译(#if … #elseif… #else… #endif),可选的方法有:1、手动编辑代...
1 临时生效vim a.log:set nu2 永久生效
vim ~/.vimrc输入set nu 保存退出第二种方法比较好用。引用博客地址:https://blog.csdn.net/woshixuye/article/details/53913723原文:https://www.cnblogs.com/littleswan/p/12084364.html