This page allows you to change the system Password, for the username admin Default realm, user and password can be set in configuration file This Form uses a POST method to send data back to a Web server You need to click on Change button to ctivate the changes
Tập tin system.cgi i password_h.inc c d Authentication %s 73 t Password for user 'admin' c d t Retype your password c d i password_f.inc Giải thích: Khi biên dịch, từ file tạo file theo nguyên tắc sau: lấy code file password_h.inc, lấy code file system.cgi, sau code file password_f.inc Khi đoạn code tổng hợp có dạng CODE: System Settings System Settings Item Setting c d Authentication%s t Password for user 'admin' c d t Retype your password c d 74This page allows you to change the system Password, for the username admin Default realm, user and password can be set in configuration file This Form uses a POST method to send data back to a Web server You need to click on Change button to activate the changes
Đoạn code có dạng CGI, thực thi động Đối với lệnh dạng c (có ký tự đứng đầu khác "c") chương trình giữ nguyên, lệnh dạng c chương trình chuyển cho đoạn code sau thực thi Đoạn code xử lý file CGI có dạng sau CODE: void cgi_process_data (U8 code, U8 *dat, U16 len) { /* This function is called by HTTP server to process the returned Data */ /* for the CGI Form POST method It is called on SUBMIT from the browser */ if (len == 0) { 75 /* No data or all items (radio, checkbox) are off */ return; } var = (U8 *)alloc_mem (50); stpassw = 0; str_copy ((U8*)m_pNetCfg->lng, (U8*)"0"); str_copy ((U8*)m_pNetCfg->lat, (U8*)"0"); { /* Parse all returned parameters */ dat = http_get_var (dat, var, 40); if (var[0] != 0) { /* Parameter found, returned string is non 0-length */ if (str_scomp (var, (unsigned char *)"pw=") == TRUE) { /* Change password */ str_copy (passw, var+3); stpassw |= 1; } else if (str_scomp (var, (unsigned char *)"pw2=") == TRUE) { /* Retyped password */ str_copy (retyped, var+4); stpassw |= 2; } else if (str_scomp (var, (unsigned char *)"LocalIp=") == TRUE) { p=var+8; GanIP(m_pNetCfg->IP_Addr,(char*)p); } else if (str_scomp (var, (unsigned char *)"Port=") == TRUE) { p=var+5; 76 m_pNetCfg->port=atoi((char*)p); } else if (str_scomp (var, (unsigned char *)"ServerIp=") == TRUE) { p=var+9; GanIP(m_pNetCfg->SERVERIP_Addr,(char*)p); } else if (str_scomp (var, (unsigned char *)"gateway=") == TRUE) { p=var+8; GanIP(m_pNetCfg->IP_Gateway,(char*)p); } else if (str_scomp (var, (unsigned char *)"DNSServer=") == TRUE) { p=var+10; GanIP(m_pNetCfg->IP_Dns1,(char*)p); } else if (str_scomp (var, (unsigned char *)"ID=") == TRUE) { p=var+3; m_pNetCfg->StationID=atoi((char*)p); } else if (str_scomp (var, (unsigned char *)"Lat=") == TRUE) { str_copy ((U8*)m_pNetCfg->lat, var+4); } else if (str_scomp (var, (unsigned char *)"Lng=") == TRUE) { str_copy ((U8*)m_pNetCfg->lng, var+4); } 77 } } while (dat); if (stpassw == 0x03) { len = strlen ((char*)passw); if (mem_comp (passw, retyped, len) == TRUE) { /* OK, both entered passwords the same, change it */ str_copy ((U8*)m_pNetCfg->Password, passw); } } } Giải thích: dạng lệnh c thường có chuổi điều khiển %s, chuổi dùng để chèn liệu người dùng Còn thông tin nhận từ người dùng chứa trỏ dat với chiều dài lưu tham số len Tập tin system.cgi sau thông dịch System Settings System Settings Item Setting AuthenticationEnabled Password for user 'admin' 78 Retype your passwordThis page allows you to change the system Password, for the username admin Default realm, user and password can be set in configuration file This Form uses a POST method to send data back to a Web server You need to click on Change button to activate the changes
11 Code Server Client (C#) Server: using System; using System.Text; using System.Net; 79 using System.Net.Sockets; public class Y2Server { private const int BUFFER_SIZE=1024; private const int PORT_NUMBER=9999; static ASCIIEncoding encoding=new ASCIIEncoding(); public static void Main() { try { IPAddress address = IPAddress.Parse("127.0.0.1"); TcpListener listener=new TcpListener(address,PORT_NUMBER); // listen listener.Start(); Console.WriteLine("Server started on "+listener.LocalEndpoint); Console.WriteLine("Waiting for a connection "); Socket socket=listener.AcceptSocket(); Console.WriteLine("Connection received from " + socket.RemoteEndPoint); // receive byte[] data=new byte[BUFFER_SIZE]; 80 socket.Receive(data); string str=encoding.GetString(data); // send socket.Send(encoding.GetBytes("Hello "+str)); // close socket.Close(); listener.Stop(); } catch (Exception ex) { Console.WriteLine("Error: " + ex); } Console.Read(); } } Client: using System; using System.IO; 81 using System.Net; using System.Text; using System.Net.Sockets; public class Y2Client{ private const int BUFFER_SIZE=1024; private const int PORT_NUMBER=9999; static ASCIIEncoding encoding= new ASCIIEncoding(); public static void Main() { try { TcpClient client = new TcpClient(); // connect client.Connect("127.0.0.1",PORT_NUMBER); Stream stream = client.GetStream(); Console.WriteLine("Connected to Y2Server."); Console.Write("Enter your name: "); string str = Console.ReadLine(); 82 // send byte[] data=encoding.GetBytes(str); stream.Write(data,0,data.Length); // receive data =new byte[BUFFER_SIZE]; stream.Read(data,0,BUFFER_SIZE); Console.WriteLine(encoding.GetString(data)); // Close stream.Close(); client.Close(); } catch (Exception ex) { Console.WriteLine("Error: " + ex); } Console.Read(); } } 83 ... 58 IV BẢN TÓM TẮT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG CƠ BẢN Mã số: SV2015 – 28 Vấn đề nghiên cứu (vấn đề, tính cấp thiết) Điện tử... mạch phát triển chức thông số cảm biến, từ thiết kế sơ đồ cho mạch giám sát 2.1 Các thiết bị mạch: Các thiết bị sử dụng để thiết lập mạch giám sát bao gồm: mạch phát triển stm32f4-Discovery, cảm... HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC SÀI GÒN BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN THIẾT KẾ VÀ CHẾ TẠO MẠCH GIÁM SÁT GỒM CÁC TÍNH NĂNG CƠ BẢN Mã số đề tài: SV2015 - 28 Xác nhận Khoa (ký,