Esempio n. 1
0
/**
 *\brief 发送网络请求,并检测请求结果是否成功失败。
 *\param fs 定义了套接子得相关属性。
 *\param msg 定义了发送的命令缓存。 
 *\param mlen 定义了发送的命令长度。
 *\param recv_buf 定义了获得返回的信息缓存。
 *\param recv_len 定义了返回数据的长度信息。
 *\param success_reply 定义了获得返回失败的信息缓存。
 *\param rlen 定义了返回失败数据的长度信息。 
 *\param timeout_usec 定义了命令请求超时得时间。 
 *\retval E_OK 表示成功。
 */
e_int32 fsocket_request_failed(fsocket_t *fs, e_uint8 *msg, e_uint32 mlen,
		e_uint8 *recv_buf, e_uint32 recv_len, const e_uint8 *failed_reply,
		const e_uint32 rlen, e_uint32 timeout_usec) {
	e_int32 ret;

	ret = fsocket_request(fs, msg, mlen, recv_buf, recv_len, timeout_usec);
	e_assert(ret>0, ret);

	if (strncmp(recv_buf, failed_reply, rlen)) {
		return E_OK;
	}

	return E_ERROR;
}
Esempio n. 2
0
/**
 *\brief 发送网络命令。
 *\param fs 定义了套接子得相关属性。
 *\param msg 定义了发送的命令缓存。 
 *\param mlen 定义了发送的命令长度。const
 *\param success_reply 定义了获得返回的信息缓存。
 *\param rlen 定义了返回数据的长度信息。
 *\param timeout_usec 定义了命令请求超时得时间。 
 *\retval E_OK 表示成功。
 */
e_int32 fsocket_command(fsocket_t *fs, e_uint8 *msg, e_uint32 mlen,
		e_uint8 *success_reply, e_uint32 rlen, e_uint32 timeout_usec) {
	e_int32 ret;
	e_int8 buf[MSG_MAX_LEN] = { 0 };

	ret = fsocket_request(fs, msg, mlen, buf, MSG_MAX_LEN, timeout_usec);
	e_assert(ret>0, ret);

	if (!strncmp(buf, success_reply, rlen)) {
		return E_OK;
	} else {
		DMSG((STDOUT, "FAKE SOCKET [%s:%u:%u] error replay:%5s\n", fs->name, (unsigned int) fs->id, (unsigned int) fs->rq_id, buf));
	}

	return E_ERROR;
}
Esempio n. 3
0
void request_thread(void *data) {
	int i = 10;
	e_int32 ret;
	e_uint8 buf[128];
	e_uint8 msg[128];
	fsocket_t* fd = (fsocket_t*) data;
	sprintf(msg, "\tREQUEST MSG FROM %hd\r\n", fd->id);

	while (i--) {
		DMSG((STDOUT,"[%d] client send %s",i,msg));
		ret = fsocket_request(fd, msg, strlen(msg), buf, 128, 1000000000); //1 s
		if (ret > 0) {
			DMSG((STDOUT,"[%s.%d] client request recv [ %s ]\r\n",
					fd->name,fd->id,buf));
		} else {
			DMSG((STDOUT,"[%s.%d] client request failed\r\n",fd->name,fd->id));
		}

		Delay(1000);
	}

	fsocket_close(fd);
	count++;
}