当前位置: 首页>>代码示例>>C++>>正文


C++ Response::GetNumber方法代码示例

本文整理汇总了C++中Response::GetNumber方法的典型用法代码示例。如果您正苦于以下问题:C++ Response::GetNumber方法的具体用法?C++ Response::GetNumber怎么用?C++ Response::GetNumber使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Response的用法示例。


在下文中一共展示了Response::GetNumber方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: threadChild

void* threadChild(void *arg) {
    /* Child Thread */

    while (parentExit == 0) {
        /* Listening XON XOFF signal */

        if ( recvfrom(sockfd, res, MaxResponseLength, 0, (struct sockaddr *)&targetAddr, &addrLen) == -1 )
            perror("recvfrom");

        Response R;
        R.GetDecompiled(res);
        if ( R.GetType() == ACK ) {
            W.setACK(R.GetNumber());
            printf("ACK received from Frame %d\n", R.GetNumber());
        } else {
            printf("NAK received from Frame %d\n", R.GetNumber());

            string temp = ((W.getFrame(R.GetNumber())).GetCompiled());

            sprintf(bufs, "%s", temp.c_str());
            if (sendto(sockfd, bufs, MaxFrameLength, 0, (struct sockaddr *)&targetAddr, addrLen)==-1) {
                printf("err: sendto\n");
            } else {
                printf("Mengirim Frame %d [NAK]\n", R.GetNumber());
            }
        }

    }

    printf("Exiting Child\n");
    return NULL;
}
开发者ID:ryanyonata,项目名称:Tubes-1-JarKom,代码行数:32,代码来源:sender.cpp

示例2: threadChild

void* threadChild(void *arg) {
	/* Child Thread */
	char* chck;
	int i = 0;
	int length = 0;
	int start = 0;
	bool canBeConsumed = false;
	Frame Ftemp[100];
	int temp[100];
	int tempLength = 0;

	/* Sampai program diakhiri, konsumsi terus byte yang ada pada buffer*/
	while (parentExit != 1) {	
		chck = q_get(sockfd, &buffer);
		if ( chck != NULL ) {
			Frame F;
			F.GetDecompiled(chck);

			// Set frame number dan checksum pada Response
			R.SetNumber(F.GetNumber());
			R.SetChecksum(F.GetChecksum());

			// Checks checksum
				cout << F.GenerateChecksumCRC(chck) << endl;
				cout << F.GetChecksum() << endl;
			if ( F.GenerateChecksumCRC(chck) != F.GetChecksum() ) {
				printf("Invalid Checksum. Send NAK.\n");
				R.SetType(NAK);

				--receivedByte;
			} else {
				R.SetType(ACK);	
			}

			int num = R.GetNumber();
			
			if (tempLength < ( R.GetNumber() + 1 )) {
				tempLength = R.GetNumber() + 1;
			}

			if (R.GetType() == ACK)
			{
				if (num < i)
				{
					temp[num] = num;
					Ftemp[num] = F;
				}
				else {
					temp[i] = i;
					Ftemp[i] = F;
					if ( i > 0 ) { length++; }
				}
			}	
			else {
				//NAK
				if (num < i)
					temp[num] = -1;
				else
					temp[i] = -1;
			}

			int j = Rw.getLength();

			while ( ( temp[j] != -1 ) && ( j < tempLength ) ) {

				Rw.insertFrame(Ftemp[j], j);
				cout << "Mengkonsumsi frame ke-" << j << " [" << Rw.getFrame(j).GetMessage() << "] Mencoba mengirim ACK" << endl;
				
				++consumedByte;
				Rw.slideWindow();
				++j;
			}
			i++;


			sprintf(res, "%s", (R.GetCompiled()).c_str());
			if (sendto(sockfd, res, MaxResponseLength, 0, (struct sockaddr *)&targetAddr, addrLen) == -1) {
				perror("sendto");
			}

			if ( ( getEOF != 0 ) && ( (getEOF + 1) == consumedByte ) ) {
				parentExit = 1;
			}

		}
		
	}

	Rw.iterateFrames();
	printf("Exiting Parent\n");
	return NULL;
}
开发者ID:ryanyonata,项目名称:Tubes-1-JarKom,代码行数:92,代码来源:receiver.cpp


注:本文中的Response::GetNumber方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。