Example #1
0
/* --- 解析HTTP报文头,并与目标服务器建立连接 --- */
int HttpConnect(int nLocalSock, int *nRemoteSock)
{
	char szIp[30], buf[4096];
	int nread;	
	memset(buf,0,sizeof(buf));
											/* 接收网页浏览端发送的数据请求 */
	while ((nread = read(nLocalSock, buf, sizeof(buf))) < 0) 
	{	
		if (errno != EINTR)					/* 信号导致read中断,继续接收 */
		{
			perror("read");					/* 其它错,结束子进程 */
			return 1;				
		}
	}
	memset(szIp, 0, sizeof(szIp));
	/* 解析HTTP报文,简单验证报文,并获取目标服务器的IP地址 */
	if (GetObjectIp(buf, szIp) != 0) return 2;
	/* 连接目标服务器,端口80(网页浏览端口) */
	if (!VERIFY(ConnectSock(nRemoteSock, 80, szIp) == 0))
	{									
		PrintLog(stderr, "Connect Server Fail,Addr[%s]", szIp);
		return 3; 							/* 连接目标端失败,结束子进程 */
	}
	if (WriteFile(*nRemoteSock, buf, nread) != 0)			/* 转发数据 */
	{
		PrintLog(stderr, "Write message to server error[%d]", nread);
		perror("write");					/* 数据转发失败,结束子进程 */
		return 4;
	}	
	return 0;								/* 成功返回 */
}
Example #2
0
/*! \brief  opTIMER_READY byte code
 *
 */
void      cTimerReady(void)
{
  IP      TmpIp;
  DSPSTAT DspStat = BUSYBREAK;

  TmpIp   =  GetObjectIp();

  if (*(ULONG*)PrimParPointer() <= cTimerGetmS())
  {
    DspStat  =  NOBREAK;
  }
  if (DspStat == BUSYBREAK)
  { // Rewind IP

    SetObjectIp(TmpIp - 1);
  }
  SetDispatchStatus(DspStat);

}