Beispiel #1
0
static void run( const char *input, const char *output )
{
    Huint   i;
    Huint   j;
    image   *img;
    clock_t start;
    clock_t end;
    double  ela;
    double  bytes;
    double  bandw;

    img = read_png_file( input );
    start = clock();
        send_image( img );
        recv_image( img );
    end = clock();
    write_png_file( output, img );
    
    ela = (double)(end - start);
    ela /= 2405516000.0;

    bytes = LOOPS * DATA * 8.0;
    bandw = bytes / ela;
    
    printf( "Processed %.2f bytes of data in %.2f seconds\n", bytes, ela );
    printf( "Bandwidth: %.2f bytes/sec\n", bandw );
}
Beispiel #2
0
/* The image cache creates a thread that calls this function. It waits for remote
 * images from the image-cache.
 */
void *accept_remote_image_connections(void *port)
{
	int fd = *((int *) port);
	struct sockaddr_in cli_addr;
	socklen_t clilen = sizeof(cli_addr);
	char snapshot_id_buf[PATHLEN], path_buf[PATHLEN];
	uint64_t size, ret;
	int flags, proxy_fd;
	struct rimage *rimg;

	proxy_fd = accept(fd, (struct sockaddr *) &cli_addr, &clilen);
	if (proxy_fd < 0) {
		pr_perror("Unable to accept remote image connection from image proxy");
		return NULL;
	}
	while (1) {
		ret = read_remote_header(proxy_fd, snapshot_id_buf, path_buf, &flags, &size);
		if (ret < 0) {
			pr_perror("Unable to receive remote header from image proxy");
			return NULL;
		}
		/* This means that the no more images are coming. */
		else if (!ret) {
			pr_info("Image Proxy connection closed.\n");
			finished = true;
			unlock_workers();
			return NULL;
		}

		pr_info("Received %s request for %s:%s\n",
			flags == O_RDONLY ? "read" :
				flags == O_APPEND ? "append" : "write",
			path_buf, snapshot_id_buf);

		rimg = prepare_remote_image(path_buf, snapshot_id_buf, flags);

		prepare_recv_rimg();
		ret = recv_image(proxy_fd, rimg, size, flags, false);
		if (ret < 0) {
			pr_perror("Unable to receive %s:%s from image proxy",
				rimg->path, rimg->snapshot_id);
			finalize_recv_rimg(NULL);
			return NULL;
		} else if (ret != size) {
			pr_perror("Unable to receive %s:%s from image proxy (received %lu bytes, expected %lu bytes)",
			    rimg->path, rimg->snapshot_id, ret, size);
			finalize_recv_rimg(NULL);
			return NULL;
		}
		finalize_recv_rimg(rimg);

		pr_info("Finished receiving %s:%s (received %lu bytes)\n",
			rimg->path, rimg->snapshot_id, ret);
	}
}
Beispiel #3
0
void VideoThread::run()
{
    int size;
//    struct sockaddr_in addr;
    struct ReqHead head;
    uchar frame[320*240*3];

    int count=0;
    //创建TCP套接字
//    sock=socket(PF_INET,SOCK_STREAM,0);
//    addr.sin_family = AF_INET;
//    addr.sin_port = htons(6666);

//    char*  ch;

//    QByteArray ba = ip.toLatin1();

//    ch=ba.data();
//    inet_pton(AF_INET,ch,&addr.sin_addr);
//    //连接服务器
//    if(::connect(sock,(struct sockaddr*)&addr,sizeof(addr)) != 0){
//        ::close(sock);
//        return;
//    }
    //发送视频监控请求
    head.cmdNo = VIDEO_REQ;
    head.bodyLen = HEAD_SIZE;
    send(sock,&head,sizeof(head),0);
    while(!stopped) {
        //接收消息头
            if(recv(sock,&head,HEAD_SIZE,0)<=0) {
                ::close(sock);
                break;
            }
            count = 0;
            while(count < head.bodyLen){
               if((size = recv(sock,frame+count,head.bodyLen-count,0))<=0 ){
                    ::close(sock);
                    return;
                }
                count += size;
            }
            emit recv_image(frame,count);

    }
    qDebug()<<"stop";
    sleep(1);
//    ::close(sock);
    stopped = true;
}
Beispiel #4
0
recv_pack()
{
	memset(getbuf,0, 1024*1000);
	tout.tv_sec = 3;
	tout.tv_usec = 0;
	for(i = 0; i < 4; i++)
	{
		dtcmr_recv_timeout(sockfd, &recv_buf, 1,&tout);
		if(recv_buf == 0x77){
			recv_buf = 0;
		}else{
			usleep(100000);
			i = 0;
			recv_buf = 0;
		}
	}

	dtcmr_recv_timeout(sockfd, &SEND_CMD, 1,&tout);
	switch(SEND_CMD)
	{
		case CMD_IMAGE:
			printf("SEND_CMD = %x\n",SEND_CMD);
			ret = dtcmr_recv_timeout(sockfd, &recv_leng, 4,&tout);
			printf("recv_leng= %d\n", recv_leng);
			if(ret < 0){
				printf("recv error");
			}

			ret = dtcmr_recv_timeout(sockfd, getbuf, recv_leng,&tout);
			media_t *tmpinfo=(media_t *)getbuf;
			memcpy(&imageinfo.count, &(tmpinfo->count), 4);
			printf("imageinfo.count = %d\n",imageinfo.count);


			for(i = 0;i <= imageinfo.count; i ++)
			{
				memcpy(imageinfo.get_info[i].filename,tmpinfo->get_info[i].filename,100);
				memcpy(imageinfo.get_info[i].filesize,tmpinfo->get_info[i].filesize,32);
				memcpy(imageinfo.get_info[i].filepath,tmpinfo->get_info[i].filepath,500);
			}
			break;

		case CMD_APP:
			memset(&appinfo, 0, sizeof(allappinfo_t));
			printf("SEND_CMD = %x\n",SEND_CMD);
			ret = dtcmr_recv_timeout(sockfd, &recv_leng, 4,&tout);

			printf("recv_leng= %d\n", recv_leng);
			if(ret < 0){
				printf("recv error");
			}
			memset(getbuf,0, 1024*1000);

			ret = dtcmr_recv_timeout(sockfd, getbuf, recv_leng,&tout);

			allappinfo_t *apptmpinfo=(allappinfo_t *)getbuf;
			memcpy(&appinfo.count, &(apptmpinfo->count), 4);
			printf("appinfo.count = %d\n",appinfo.count);
			for(i = 0;i <= appinfo.count; i ++)
			{
				appinfo.get_info[i].apppath = apptmpinfo->get_info[i].apppath;
				appinfo.get_info[i].appattribute = apptmpinfo->get_info[i].appattribute;

				memcpy(appinfo.get_info[i].appname,apptmpinfo->get_info[i].appname,50);
				memcpy(appinfo.get_info[i].apppackname,apptmpinfo->get_info[i].apppackname,100);
				memcpy(appinfo.get_info[i].appversion,apptmpinfo->get_info[i].appversion,15);
				memcpy(appinfo.get_info[i].appsize,apptmpinfo->get_info[i].appsize,16);
			}
			OVERSIGN = 1;
			REFRESHSIGN  = CMD_APP;
			SEND_CMD = 0;
			break;

		case CMD_BOOK:
			memset(&bookinfo, 0, sizeof(allbookinfo_t));
			printf("SEND_CMD = %x\n",SEND_CMD);
			ret = dtcmr_recv_timeout(sockfd, &recv_leng, 4,&tout);

			printf("recv_leng= %d\n", recv_leng);
			if(ret < 0){
				printf("recv error");
			}
			memset(getbookbuf,0, 1024*1000);

			ret = dtcmr_recv_timeout(sockfd, getbookbuf, recv_leng,&tout);

			allbookinfo_t *booktmpinfo=(allbookinfo_t *)getbookbuf;
			memcpy(&bookinfo.count, &(booktmpinfo->count), 4);
			printf("bookinfo.count = %d\n",bookinfo.count);
			for(i = 0;i <= bookinfo.count; i ++)
			{
				memcpy(bookinfo.get_info[i].bookname,booktmpinfo->get_info[i].bookname,20);
				//				printf("bookname   = %s\n",booktmpinfo->get_info[i].bookname);
				memcpy(bookinfo.get_info[i].booknumber,booktmpinfo->get_info[i].booknumber,18);
				//				printf("booknumber = %s\n",bookinfo.get_info[i].booknumber);
			}
			REFRESHSIGN  = CMD_BOOK;
			SEND_CMD = 0;
			break;

		case CMD_STORAGE:
			memset(&bookinfo, 0, sizeof(allbookinfo_t));
			printf("SEND_CMD = %x\n",SEND_CMD);
			ret = dtcmr_recv_timeout(sockfd, &recv_leng, 4,&tout);

			printf("recv_leng= %d\n", recv_leng);
			if(ret < 0){
				printf("recv error");
			}
			memset(getstoragebuf,0, 200);

			ret = dtcmr_recv_timeout(sockfd, getstoragebuf, recv_leng,&tout);

			storageinfo_t *storagetmpinfo=(storageinfo_t  *)getstoragebuf;

			memcpy(storageinfo.sdSize,storagetmpinfo->sdSize,32);
			memcpy(storageinfo.sdAvail,storagetmpinfo->sdAvail,32);
			memcpy(storageinfo.memorySize,storagetmpinfo->memorySize,32);
			memcpy(storageinfo.memoryAvail,storagetmpinfo->memoryAvail,32);
			printf("%s,%s,%s,%s",storageinfo.sdSize,storageinfo.sdAvail,storageinfo.memorySize,storageinfo.memoryAvail);

			REFRESHSIGN  = CMD_STORAGE;
			OVERSIGN = 1;
			SEND_CMD = 0;
			break;
		case CMD_CALLPHONE:
			printf("SEND_CMD = %x\n",CMD_CALLPHONE);
			break;
		case CMD_SENDMMS:
			printf("SEND_CMD = %x\n",CMD_SENDMMS);
			ret = dtcmr_recv_timeout(sockfd, &recv_leng, 4,&tout);
			if(recv_leng)
				printf("send message success\n");

			break;

		case CMD_MMS:
			memset(&mmsinfo, 0, sizeof(allmmsinfo_t));
			memset(getmmsbuf,0, 1024*10000);

			printf("RECV_CMD = %x\n",SEND_CMD);

			ret = dtcmr_recv_timeout(sockfd, &recv_leng, 4,&tout);

			printf("recv_leng= %d\n", recv_leng);
			if(ret < 0){
				printf("recv error");
			}

			ret = dtcmr_recv_timeout(sockfd, getmmsbuf, recv_leng,&tout);

			allmmsinfo_t *mmstmpinfo=(allmmsinfo_t *)getmmsbuf;
			mmsinfo.count = mmstmpinfo->count;
			printf("mmsinfo.count = %d\n",mmsinfo.count);
			for(i = 0;i <= mmsinfo.count; i ++)
			{
				memcpy(mmsinfo.get_info[i].mmsname,mmstmpinfo->get_info[i].mmsname,20);
				memcpy(mmsinfo.get_info[i].mmsnumber,mmstmpinfo->get_info[i].mmsnumber,18);
				memcpy(mmsinfo.get_info[i].mmsbody,mmstmpinfo->get_info[i].mmsbody,1024*2);
				//								printf("mmsbody   = %s\n",mmsinfo.get_info[i].mmsbody);
				memcpy(mmsinfo.get_info[i].mmsdate,mmstmpinfo->get_info[i].mmsdate,25);
				//				printf("mmsdate   = %s\n",mmsinfo.get_info[i].mmsdate);
				mmsinfo.get_info[i].typeId = mmstmpinfo->get_info[i].typeId;
				//				printf("mmstypeId = %d\n",mmsinfo.get_info[i].typeId);
			}
			OVERSIGN = 1;
			REFRESHSIGN  = CMD_MMS;
			SEND_CMD = 0; 
			break;
		case CMD_ALL:
			recv_storage();
			recv_mms();
			recv_book();
			recv_app();
			recv_image();

			OVERSIGN = 1;
			REFRESHSIGN  = CMD_ALL;
			SEND_CMD = 0; 

		default:
			break;
	}
}