Server.Transfer的举例

2011-08-04    21:02

因为系统中有些页面需要互相传值,网上简单查询了一下资料,发现主要有4种方法,

其中觉得比较简单和流行的是server.transfer这个方法。

但是看了几个网站的简介,发现几乎都是直接的复制和粘贴,具体的举例也缺乏必要的说明。

虽然对于高手而言不屑太过详细的描述,但对于我这样的初学者就很显不便了。

自己琢磨了一下,现把自己整理后的体会及代码如下描述:

首先是a.aspx页面传送值至b.aspx页面,

传送的值是dropdownlist1中的text和textbox1中的text;

那么在a.aspx中需要在button或者link的click下添加如下语句:

protected void Button1_Click(object sender, System.EventArgs e)
    {
        Server.Transfer("b.aspx");
    }

public string aa1
    {
        get{ return dropdownlist1.Text;  }
    }


    public string aa2
    {
        get
        {
            return textbox1.Text;
        }
    }


其次,在b.aspx的源码中第一句添加   <%@ Reference Page="a.aspx"%>

如果a.aspx与b.aspx不在同一个文件夹下需要在前面添路径。

然后在b.aspx.cs中,

protected void Page_Load(object sender, EventArgs e)
    {
       a page1;  //前面个a表示 a.aspx,后面的page1可以随意定义
        page1 = (a)Context.Handler;
        string kehu = aa1;
        string date = aa2;
        
    }

传值就完成了。

然后就可以引用kehu和date了。

其他的就不累述了。


<think>好的,用户想了解Zynq上的lwIP TFTP服务器。首先,我需要确认用户的基础知识,是否了解Zynq、lwIP和TFTP协议。不过用户直接提问,可能已经有一定的背景。 首先,Zynq是Xilinx的SoC,结合了ARM处理器和FPGA,常用于嵌入式系统。lwIP是轻量级TCP/IP协议栈,适合资源受限的环境。TFTP是简单的文件传输协议,基于UDP,常用于网络启动或固件更新。 接下来,用户可能需要知道如何在Zynq上搭建TFTP服务器。需要分步骤说明,比如硬件配置、软件设置、lwIP的初始化和TFTP服务器的实现。还要考虑硬件设计部分,比如以太网接口的配置,可能涉及Vivado中的IP核。 需要提到关键点:lwIP的配置选项,比如启用TFTP相关的宏定义,内存管理,以及回调函数的实现。可能还需要代码示例,比如初始化流程和TFTP处理函数。 另外,常见问题可能包括性能优化、内存不足、端口冲突等,需要给出解决方案。比如调整PBUF_POOL_SIZE,或者处理并发请求时的资源限制。 最后,应用场景如固件升级、配置更新,这些可以举例说明,帮助用户理解实际用途。同时,确保回答结构化,分步骤,让用户能逐步实施。</think>以下是对Zynq平台上基于lwIP实现TFTP服务器的分步介绍: --- ### 一、基本概念 1. **Zynq平台** Xilinx Zynq SoC = ARM Cortex-A9双核处理器 + FPGA可编程逻辑,常用于嵌入式网络应用开发 2. **lwIP协议栈** Lightweight IP协议栈,特点: - 内存占用小(约40KB RAM) - 支持TCP/IP/UDP/DHCP等协议 - 提供RAW/Callback API和Sequential API两种编程模式 3. **TFTP协议** Trivial File Transfer Protocol特性: - 基于UDP(默认端口69) - 无认证机制 - 支持二进制/ASCII模式传输 - 常用于嵌入式系统固件升级 --- ### 二、硬件准备 1. **Vivado硬件设计** 需配置以下IP核: ```tcl create_bd_cell -type ip -vlnv xilinx.com:ip:axi_ethernet axi_ethernet_0 create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma axi_dma_0 ``` 2. **连接框图** ``` [Zynq PS] <--AXI--> [AXI Ethernet] <--RGMII--> PHY芯片 |--AXI--> [AXI DMA] ``` --- ### 三、软件实现步骤 #### 步骤1:配置lwIP 在SDK/Xilinx SDK中: ```c // lwipopts.h 关键配置 #define LWIP_UDP 1 #define LWIP_NETIF_HOSTNAME 1 #define TFTP_SERVER_DEBUG 1 #define MEM_SIZE (16*1024) // 根据实际调整 ``` #### 步骤2:实现TFTP回调 ```c // tftp_server.c static void tftp_recv_callback(void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *addr, u16_t port) { if(p->len >= 4) { // 检查TFTP操作码 switch(*((u16_t*)p->payload)) { case TFTP_RRQ: // Read请求处理 send_file(pcb, addr, port, (char*)p->payload + 2); break; case TFTP_WRQ: // Write请求处理 receive_file(pcb, addr, port, (char*)p->payload + 2); break; } } pbuf_free(p); } ``` #### 步骤3:初始化服务 ```c void tftp_server_init() { struct udp_pcb *pcb = udp_new(); udp_bind(pcb, IP_ADDR_ANY, TFTP_PORT); udp_recv(pcb, tftp_recv_callback, NULL); } ``` --- ### 四、关键问题解决 1. **传输失败处理** ```c // 重传机制实现示例 #define MAX_RETRIES 5 int retries = 0; while(retries++ < MAX_RETRIES) { if(send_packet() == SUCCESS) break; sys_msleep(100); } ``` 2. **内存优化** 调整lwIP内存池参数: ```c #define PBUF_POOL_SIZE 8 // 默认是4 #define MEMP_NUM_UDP_PCB 4 // 默认是4 ``` --- ### 五、典型应用场景 1. **工厂生产环节** ```mermaid graph TD A[产线PC] --TFTP--> B[Zynq设备] B --新固件--> C[生产线设备] ``` 2. **现场升级流程** ``` 1. 设备进入TFTP模式 2. PC端执行:tftp -i 192.168.1.100 PUT firmware.bin 3. 设备校验并烧写固件 ``` --- ### 六、性能指标 - 传输速度:100Mbps网络下可达 3.2MB/s - 内存消耗:约50KB(含协议栈) - 最大文件大小:受限于Zynq PS的DDR容量 建议在设计中加入文件校验(如CRC32)和回滚机制以提高可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值