欢迎来到皮皮网网首页

【华盛牛牛源码】【dubbo 源码分析容器】【html直播录制源码】strncmp 源码

来源:mixly 源码分析 时间:2024-12-24 04:12:48

1.linux下socket 网络编程(客户端向服务器端发送文件) 求源代码 大哥大姐帮帮忙 。。华盛牛牛源码谢谢
2.如何用OPENCV和VC实现人眼识别功能?

strncmp 源码

linux下socket 网络编程(客户端向服务器端发送文件) 求源代码 大哥大姐帮帮忙 。dubbo 源码分析容器html直播录制源码谢谢

       server:

       #include <stdio.h>

       #include <errno.h>

       #include <unistd.h>

       #include <signal.h>

       #include <stdlib.h>

       #include <sys/types.h>

       #include <sys/socket.h>

       #include <arpa/inet.h>

       #include <netinet/in.h>

       #include <syslog.h>

       #include <sys/time.h>

       #include <string.h>

       #include <fcntl.h>

       #include <sys/wait.h>

       #define MAXDATASIZE

       #define SERVPORT

       #define BACKLOG

       int SendFileToServ(const char *path,aes加密源码算法 const char *FileName, const char *ip)

       {

       #define PORT

        int sockfd;

        int recvbytes;

        char buf[MAXDATASIZE];

        char send_str[MAXDATASIZE];

        char filepath[] = { 0};

        struct sockaddr_in serv_addr;

        FILE *fp;

        sprintf(filepath, "%s%s", path, FileName);

        if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

        {

        perror("socket");

        return 1;

        }

        bzero(&serv_addr,sizeof(struct sockaddr_in));

        serv_addr.sin_family=AF_INET;

        serv_addr.sin_port=htons(PORT);

        inet_aton(ip, &serv_addr.sin_addr);

        int IErrCount = 0;

       again:

        if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)

        {

        if (5 == IErrCount)

        return 1;

        IErrCount++;

        perror("connect");

        sleep(2);

        goto again;

        }

        //if ((fp = fopen(FileName, "rb")) == NULL)

        if ((fp = fopen(filepath, "rb")) == NULL)

        {

        perror("fopen ");

        return 1;

        }

        recvbytes = write(sockfd, FileName, strlen(FileName));

        recvbytes = read(sockfd, buf, MAXDATASIZE);

        if (!memcmp(buf, "sendmsg", 7))

        {

        while(fgets(send_str, MAXDATASIZE, fp))

        {

        recvbytes = write(sockfd, send_str, strlen(send_str));

        recvbytes = read(sockfd, buf, MAXDATASIZE);

        if (recvbytes <= 0)

        {

        fclose(fp);

        close(sockfd);

        return 1;

        }

        if (memcmp(buf, "goon", 4))

        {

        fclose(fp);

        close(sockfd);

        return 1;

        }

        }

        recvbytes = write(sockfd, "end", 3);

        }

        else

        {

        fclose(fp);

        close(sockfd);

        return 1;

        }

        memset(buf, 0, MAXDATASIZE);

        if (read(sockfd, buf, MAXDATASIZE) <= 0)

        {

        close(sockfd);

        return 2;

        }

        char *Eptr = "nginx reload error";

        //printf("bf[%s]\n", buf);

        int ret;

        ret = strncmp(buf, Eptr, strlen(Eptr));

        //printf("%d\n", ret);

        if (!ret)

        {

        close(sockfd);

        return 2;

        }

        close(sockfd);

        return 0;

       }

       int mysyslog(const char * msg)

       {

        FILE *fp;

        if ((fp = fopen("/tmp/tmp.log", "a+")) == NULL)

        {

        return 0;

        }

        fprintf(fp, "[%s]\n", msg);

        fclose(fp);

        return 0;

       }

       static void quit_handler(int signal)

       {

        kill(0, SIGUSR2);

        syslog( LOG_NOTICE, "apuserv quit...");

        // do something exit thing ,such as close socket ,close mysql,free list

        // .....

        //i end

        exit(0);

       }

       static int re_conf = 0;

       static void reconf_handler(int signal)

       {

        re_conf=1;

        syslog(LOG_NOTICE,"apuserv reload configure file .");

        // 请在循环体中判断,如果re_conf == 1,ogre源码怎么设置请再次加载配置文件。

       }

       static int isrunning(void)

       {

        int fd;

        int ret;

        struct flock lock;

        lock.l_type = F_WRLCK;

        lock.l_whence = 0;

        lock.l_start = 0;

        lock.l_len = 0;

        const char *lckfile = "/tmp/apuserv.lock";

        fd = open(lckfile,O_WRONLY|O_CREAT);

        if (fd < 0) {

        syslog(LOG_ERR,"can not create lock file: %s\n",lckfile);

        return 1;

        }

        if ((ret = fcntl(fd,F_SETLK,&lock)) < 0) {

        ret = fcntl(fd,F_GETLK,&lock);

        if (lock.l_type != F_UNLCK) {

        close(fd);

        return lock.l_pid;

        }

        else {

        fcntl(fd,F_SETLK,&lock);

        }

        }

        return 0;

       }

       int MyHandleBuff(const char *buf, char *str, char *FileName, char *pth)

       {

        sscanf(buf, "%s %s %s", pth, FileName, str);

        printf("path=%s\nfilename=%s\nip=%s\n", pth, FileName, str);

        return 0;

       }

       int main(int argc, char **argv)

       {

        int sockfd,client_fd;

        socklen_t sin_size;

        struct sockaddr_in my_addr,remote_addr;

        char buff[MAXDATASIZE];

        int recvbytes;

       #if 1

        int pid ;

        char ch ;

        int ret;

        int debug = 0;

        signal(SIGUSR1, SIG_IGN);

        signal(SIGUSR2, SIG_IGN);

        signal(SIGHUP, SIG_IGN);

        signal(SIGTERM, quit_handler);

        syslog(LOG_NOTICE,"apuserver start....");

        while ((ch = getopt(argc, argv, "dhV")) != -1) {

        switch (ch) {

        case 'd':

        debug = 1;

        break;

        case 'V':

        printf("Version:%s\n","1.0.0");

        return 0;

        case 'h':

        printf(" -d use daemon mode\n");

        printf(" -V show version\n");

        return 0;

        default:

        printf(" -d use daemon mode\n");

        printf(" -V show version\n");

        }

        }

        if (debug && daemon(0,0 ) ) {

        return -1;

        }

        if (isrunning()) {

        fprintf(stderr, "apuserv is already running\n");

        syslog(LOG_INFO,"apuserv is already running\n");

        exit(0);

        }

        while (1) {

        pid = fork();

        if (pid < 0)

        return -1;

        if (pid == 0)

        break;

        while ((ret = waitpid(pid, NULL, 0)) != pid) {

        syslog(LOG_NOTICE, "waitpid want %d, but got %d", pid, ret);

        if (ret < 0)

        syslog(LOG_NOTICE, "waitpid errno:%d", errno);

        }

        kill(0, SIGUSR2);

        sleep(1);

        syslog(LOG_NOTICE,"restart apuserver");

        }

        signal(SIGHUP, reconf_handler);

        signal(SIGPIPE, SIG_IGN);

        signal(SIGUSR1,SIG_IGN);

        signal(SIGUSR2, SIG_DFL);

        signal(SIGTERM, SIG_DFL);

       #endif

        if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

        {

        perror("socket");

        exit(1);

        }

        bzero(&my_addr,sizeof(struct sockaddr_in));

        my_addr.sin_family=AF_INET;

        my_addr.sin_port=htons(SERVPORT);

        my_addr.sin_addr.s_addr = htonl(INADDR_ANY);

        if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)

        {

        perror("bind");

        exit(1);

        }

        if(listen(sockfd,BACKLOG)==-1)

        {

        perror("listen");

        exit(1);

        }

        int nret;

        while(1)

        {

        sin_size = sizeof(struct sockaddr_in);

        if((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size))==-1)

        {

        perror("falied accept");

        continue;

        }

        memset(buff, 0, MAXDATASIZE);

        recvbytes = read(client_fd, buff, MAXDATASIZE);

        char str[] = { 0};

        char FileName[] = { 0};

        char path[] = { 0};

        MyHandleBuff(buff, str, FileName, path);

        if (recvbytes > 0)

        {

        nret = SendFileToServ(path, FileName, str);

        printf("nret[%d]\n", nret);

        if (1 == nret)

        write(client_fd, "send file error", );

        else if(2 == nret)

        write(client_fd, "reload nginx error", );

        else

        write(client_fd, "succ", 4);

        }

        close(client_fd);

        }

       }

       _________________________________________________

       client:

       #include <stdio.h>

       #include <errno.h>

       #include <unistd.h>

       #include <signal.h>

       #include <stdlib.h>

       #include <sys/types.h>

       #include <sys/socket.h>

       #include <arpa/inet.h>

       #include <netinet/in.h>

       #include <syslog.h>

       #include <sys/time.h>

       #include <string.h>

       #include <fcntl.h>

       #include <sys/wait.h>

       #define MAXDATASIZE

       #define SERVPORT

       #define BACKLOG

       int mysyslog(const char * msg)

       {

        FILE *fp;

        if ((fp = fopen("/tmp/tmp.log", "a+")) == NULL)

        {

        return 0;

        }

        fprintf(fp, "[%s]\n", msg);

        fclose(fp);

        return 0;

       }

       static void quit_handler(int signal)

       {

        kill(0, SIGUSR2);

        syslog( LOG_NOTICE, "apuserv quit...");

        // do something exit thing ,such as close socket ,close mysql,free list

        // .....

        //i end

        exit(0);

       }

       static int re_conf = 0;

       static void reconf_handler(int signal)

       {

        re_conf=1;

        syslog(LOG_NOTICE,"apuserv reload configure file .");

        // ·?1nf == 1£?′μ?

        static int isrunning(void)

       {

        int fd;

        int ret;

        struct flock lock;

        lock.l_type = F_WRLCK;

        lock.l_whence = 0;

        lock.l_start = 0;

        lock.l_len = 0;

        const char *lckfile = "/tmp/dstserver.lock";

        fd = open(lckfile,O_WRONLY|O_CREAT);

        if (fd < 0) {

        syslog(LOG_ERR,"can not create lock file: %s\n",lckfile);

        return 1;

        }

        if ((ret = fcntl(fd,F_SETLK,&lock)) < 0) {

        ret = fcntl(fd,F_GETLK,&lock);

        if (lock.l_type != F_UNLCK) {

        close(fd);

        return lock.l_pid;

        }

        else {

        fcntl(fd,F_SETLK,&lock);

        }

        }

        return 0;

       }

       int main(int argc, char **argv)

       {

        int sockfd,client_fd;

        socklen_t sin_size;

        struct sockaddr_in my_addr,remote_addr;

        char buff[MAXDATASIZE];

        int recvbytes;

       #if 1

        int pid ;

        char ch ;

        int ret;

        int debug = 0;

        signal(SIGUSR1, SIG_IGN);

        signal(SIGUSR2, SIG_IGN);

        signal(SIGHUP, SIG_IGN);

        signal(SIGTERM, quit_handler);

        syslog(LOG_NOTICE,"dstserver start....");

        while ((ch = getopt(argc, argv, "dhV")) != -1) {

        switch (ch) {

        case 'd':

        debug = 1;

        break;

        case 'V':

        printf("Version:%s\n","1.0.0");

        return 0;

        case 'h':

        printf(" -d use daemon mode\n");

        printf(" -V show version\n");

        return 0;

        default:

        printf(" -d use daemon mode\n");

        printf(" -V show version\n");

        }

        }

        if (debug && daemon(0,0 ) ) {

        return -1;

        }

        if (isrunning()) {

        fprintf(stderr, "dstserver is already running\n");

        syslog(LOG_INFO,"dstserver is already running\n");

        exit(0);

        }

        while (1) {

        pid = fork();

        if (pid < 0)

        return -1;

        if (pid == 0)

        break;

        while ((ret = waitpid(pid, NULL, 0)) != pid) {

        syslog(LOG_NOTICE, "waitpid want %d, but got %d", pid, ret);

        if (ret < 0)

        syslog(LOG_NOTICE, "waitpid errno:%d", errno);

        }

        kill(0, SIGUSR2);

        sleep(1);

        syslog(LOG_NOTICE,"restart apuserver");

        }

        signal(SIGHUP, reconf_handler);

        signal(SIGPIPE, SIG_IGN);

        signal(SIGUSR1,SIG_IGN);

        signal(SIGUSR2, SIG_DFL);

        signal(SIGTERM, SIG_DFL);

       #endif

        if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

        {

        perror("socket");

        exit(1);

        }

        bzero(&my_addr,sizeof(struct sockaddr_in));

        my_addr.sin_family=AF_INET;

        my_addr.sin_port=htons(SERVPORT);

        my_addr.sin_addr.s_addr = htonl(INADDR_ANY);

        if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)

        {

        perror("bind");

        exit(1);

        }

        if(listen(sockfd,BACKLOG)==-1)

        {

        perror("listen");

        exit(1);

        }

        char filepath[MAXDATASIZE]= { 0};

        FILE *fp;

        while(1)

        {

        sin_size = sizeof(struct sockaddr_in);

        if((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size))==-1)

        {

        perror("falied accept");

        continue;

        }

        memset(buff, 0, MAXDATASIZE);

        recvbytes = read(client_fd, buff, MAXDATASIZE);

        sprintf(filepath, "/etc/nginx/url_rule/%s", buff);

        if ((fp = fopen(filepath, "wb")) == NULL)

        {

        perror("fopen");

        close(client_fd);

        continue;

        }

        write(client_fd, "sendmsg", 7);

        while(read(client_fd, buff, MAXDATASIZE))

        {

        if (!memcmp(buff, "end", 3))

        {

        fclose(fp);

        break;

        }

        else

        {

        fprintf(fp, "%s", buff);

        write(client_fd, "goon", 4);

        }

        }

        //system("nginx -s reload");

        char *Sptr = "nginx reload succ";

        char *Eptr = "nginx reload error";

        int ret;

        ret = system("nginx -s reload");

        printf("ret[%d]\n", ret);

        if (ret != 0)

        {

        write(client_fd, Eptr, strlen(Eptr));

        }

        else

        {

        write(client_fd, Sptr, strlen(Sptr));

        }

        close(client_fd);

        }

       }

       以前写的:内容忘记了。不是很复杂你可以自己看!

如何用OPENCV和VC实现人眼识别功能?

       ã€€ã€€ç»™ä½ ä¸ªä»£ç ï¼Œäººçœ¼ç›è¯†åˆ«ï¼š

       ã€€ã€€#include "stdafx.h"

       ã€€ã€€#include "cv.h"

       ã€€ã€€#include "highgui.h"

       ã€€ã€€#include <stdio.h>

       ã€€ã€€#ifdef _EiC

       ã€€ã€€#define WIN

       ã€€ã€€#endif

       ã€€ã€€static CvMemStorage* storage = 0;

       ã€€ã€€static CvHaarClassifierCascade* cascade = 0;

       ã€€ã€€void detect_and_draw( IplImage* image );

       ã€€ã€€const char* cascade_name =

       ã€€ã€€"haarcascade_eye.xml";//人脸检测分类器

       ã€€ã€€int main( int argc, char** argv )

       ã€€ã€€{

       ã€€ã€€CvCapture* capture = 0;

       ã€€ã€€IplImage *frame, *frame_copy = 0;

       ã€€ã€€int optlen = strlen("--cascade=");

       ã€€ã€€const char* input_name;

       ã€€ã€€if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 )

       ã€€ã€€{

       ã€€ã€€cascade_name = argv[1] + optlen;

       ã€€ã€€input_name = argc > 2 ? argv[2] : 0;

       ã€€ã€€}

       ã€€ã€€else

       ã€€ã€€{

       ã€€ã€€cascade_name = "C:/OpenCV2.0/data/haarcascades/haarcascade_eye.xml";//分类器路径

       ã€€ã€€input_name = argc > 1 ? argv[1] : 0;

       ã€€ã€€}

       ã€€ã€€cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );

       ã€€ã€€if( !cascade )//如果没有找到分类器,输出以下

       ã€€ã€€{

       ã€€ã€€fprintf( stderr, "ERROR: Could not load classifier cascade\n" );

       ã€€ã€€fprintf( stderr,

       ã€€ã€€"Usage: facedetect --cascade=\"<cascade_path>\" [filename|camera_index]\n" );

       ã€€ã€€return -1;

       ã€€ã€€}

       ã€€ã€€storage = cvCreateMemStorage(0);

       ã€€ã€€capture = cvCaptureFromCAM( !input_name ? 0 : input_name[0] - '0' );//读取摄像头

       ã€€ã€€if(!capture)//如果没有摄像头读取视频文件

       ã€€ã€€capture = cvCaptureFromAVI("检测.avi");

       ã€€ã€€cvNamedWindow( "result", 1);//创建窗口

       ã€€ã€€if( capture )

       ã€€ã€€{

       ã€€ã€€for(;;)

       ã€€ã€€{

       ã€€ã€€if( !cvGrabFrame( capture ))//从摄像头中抓取帧

       ã€€ã€€break;

       ã€€ã€€frame = cvRetrieveFrame( capture );//读取上边抓取的帧

       ã€€ã€€if( !frame )

       ã€€ã€€break;

       ã€€ã€€if( !frame_copy )

       ã€€ã€€frame_copy = cvCreateImage( cvSize(frame->width,frame->height),

       ã€€ã€€IPL_DEPTH_8U, frame->nChannels );

       ã€€ã€€if( frame->origin == IPL_ORIGIN_TL )

       ã€€ã€€cvCopy( frame, frame_copy, 0 );

       ã€€ã€€else

       ã€€ã€€cvFlip( frame, frame_copy, 0 );

       ã€€ã€€detect_and_draw( frame_copy );

       ã€€ã€€if( cvWaitKey( ) >= 0 )

       ã€€ã€€break;

       ã€€ã€€}

       ã€€ã€€cvReleaseImage( &frame_copy );

       ã€€ã€€cvReleaseCapture( &capture );

       ã€€ã€€}

       ã€€ã€€else//没检测到视频文件或者摄像头

       ã€€ã€€{

       ã€€ã€€const char* filename = (char*)"检测.jpg";//读图片

       ã€€ã€€IplImage* image = cvLoadImage( filename, 1 );

       ã€€ã€€if( image )

       ã€€ã€€{

       ã€€ã€€detect_and_draw( image );

       ã€€ã€€cvWaitKey(0);

       ã€€ã€€cvReleaseImage( &image );

       ã€€ã€€}

       ã€€ã€€else

       ã€€ã€€{

       ã€€ã€€FILE* f = fopen( filename, "rt" );

       ã€€ã€€if( f )

       ã€€ã€€{

       ã€€ã€€char buf[+1];

       ã€€ã€€while( fgets( buf, , f ) )

       ã€€ã€€{

       ã€€ã€€int len = (int)strlen(buf);

       ã€€ã€€while( len > 0 && isspace(buf[len-1]) )

       ã€€ã€€len--;

       ã€€ã€€buf[len] = '\0';

       ã€€ã€€image = cvLoadImage( buf, 1 );

       ã€€ã€€if( image )

       ã€€ã€€{

       ã€€ã€€detect_and_draw( image );

       ã€€ã€€cvWaitKey(0);

       ã€€ã€€cvReleaseImage( &image );

       ã€€ã€€}

       ã€€ã€€}

       ã€€ã€€fclose(f);

       ã€€ã€€}

       ã€€ã€€}

       ã€€ã€€}

       ã€€ã€€cvDestroyWindow("result");

       ã€€ã€€return 0;

       ã€€ã€€}

       ã€€ã€€void detect_and_draw( IplImage* img )

       ã€€ã€€{

       ã€€ã€€static CvScalar colors[] =

       ã€€ã€€{

       ã€€ã€€{ { 0,0,}},

       ã€€ã€€{ { 0,,}},

       ã€€ã€€{ { 0,,}},

       ã€€ã€€{ { 0,,0}},

       ã€€ã€€{ { ,,0}},

       ã€€ã€€{ { ,,0}},

       ã€€ã€€{ { ,0,0}},

       ã€€ã€€{ { ,0,}}

       ã€€ã€€};

       ã€€ã€€double scale = 1.3;

       ã€€ã€€IplImage* gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 );

       ã€€ã€€IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),

       ã€€ã€€cvRound (img->height/scale)),

       ã€€ã€€8, 1 );

       ã€€ã€€int i;

       ã€€ã€€cvCvtColor( img, gray, CV_BGR2GRAY );

       ã€€ã€€cvResize( gray, small_img, CV_INTER_LINEAR );

       ã€€ã€€cvEqualizeHist( small_img, small_img );

       ã€€ã€€cvClearMemStorage( storage );

       ã€€ã€€if( cascade )

       ã€€ã€€{

       ã€€ã€€double t = (double)cvGetTickCount();

       ã€€ã€€CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage,

       ã€€ã€€1.1, 2, 0/*CV_HAAR_DO_CANNY_PRUNING*/,

       ã€€ã€€cvSize(, ) );//检测人脸返回矩形人脸

       ã€€ã€€t = (double)cvGetTickCount() - t;

       ã€€ã€€printf( "detection time = %gms\n", t/((double)cvGetTickFrequency()*.) );

       ã€€ã€€for( i = 0; i < (faces ? faces->total : 0); i++ )//找到矩形中心,把矩形转化为圆形

       ã€€ã€€{

       ã€€ã€€CvRect* r = (CvRect*)cvGetSeqElem( faces, i );

       ã€€ã€€CvPoint center;

       ã€€ã€€int radius;

       ã€€ã€€center.x = cvRound((r->x + r->width*0.5)*scale);

       ã€€ã€€center.y = cvRound((r->y + r->height*0.5)*scale);

       ã€€ã€€radius = cvRound((r->width + r->height)*0.*scale);

       ã€€ã€€cvCircle( img, center, radius, colors[i%8], 3, 8, 0 );

       ã€€ã€€}

       ã€€ã€€}

       ã€€ã€€cvShowImage( "result", img );

       ã€€ã€€cvReleaseImage( &gray );

       ã€€ã€€cvReleaseImage( &small_img );

       ã€€ã€€}