10.30

// snmp_test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>
//#include <windows.h>
#include <winsock2.h>
#pragma comment(lib, "Ws2_32.lib")

#define  MAXLENT 1000

TCHAR* g_strfilePath;
TCHAR* g_strfilePath1;  
TCHAR* g_strIpAddress;
int    g_nIndex1   = 0;
int    g_nIndex2   = 0;
int    g_nIndex3   = 0;
int    g_nTimes    = 0;  
int    g_nInterval = 0;

void usage()  
{  
    printf("usage: [-f:str] [-F:str][-i:IP address] [-n: ] [-N:] {-l:number} {-t:number}\n\n");
    printf("     -f   The first(informquest) file you want to send\n");
    printf("     -F   The second(informquest) file you want to send\n");
    printf("     -n   The index of boot time in  report buff\n");
    printf("     -N   The index of bott time int get request buf\n");
    printf("     -m   The index of bott time int get request buf\n");
    printf("     -i   Witch ip you want to send to\n");
    printf("     -l   The time between two transmission\n");
    printf("     -t   how much times you want to transmit file\n");
    ExitProcess(1);
}  

void ValidateArgs(int argc,TCHAR ** argv)
{
    int i;

    if (argc < 13) {
        usage();
    }
    for (i=1;i<argc;i++)
    {
        if((argv[i][0]=='-') && (argv[i][2]== NULL))
        {
            switch(tolower(argv[i++][1]))
            {
            case 'f':
                if (argv[i]) {
                    g_strfilePath = argv[i];
                } else {
                    usage();
                }
                break;
            case 'F':
                if (argv[i]) {
                    g_strfilePath1 = argv[i];
                } else {
                    usage();
                }
                break;
            case 'i':
                if (argv[i]) {
                    g_strIpAddress = argv[i];
                } else {
                    usage();
                }
                break;
            case 'l':
                if (argv[i]) {
                    g_nInterval  = _ttoi(argv[i]);
                } else {
                    usage();
                }
                break;
            case 'n':
                if (argv[i]) {
                    g_nIndex1  = _ttoi(argv[i]);
                } else {
                    usage();
                }
                break;
            case 'N':
                if (argv[i]) {
                    g_nIndex2  = _ttoi(argv[i]);
                } else {
                    usage();
                }
                break;
            case 'm':
                if (argv[i]) {
                    g_nIndex3 = _ttoi(argv[i]);
                } else {
                    usage();
                }
                break;
            case 't':
                if (argv[i]) {
                    g_nTimes = _ttoi(argv[i]);
                } else {
                    usage();
                }
                break;
            default:
                usage();
                break;
            }
        } else {
            usage();
            break;
        }
    }
}

int _tmain(int argc, _TCHAR* argv[])  
{  


    SOCKET sock = 0;  
    WORD wVersionRequested = 0;  
    WSADATA wsaData;  
    int nErr = 0;  
    sockaddr_in addrto = { 0 }, addrfr = { 0 };
    //sockaddr_in addrfrom = { 0 };
    int addrlen = 0;
    HANDLE hFile, hFile1= NULL;  
    LPOFSTRUCT lpOpstruct = NULL;  	
    DWORD dwMaxLen;  
    DWORD dwLen ,dwLen1;    
    char *buf = new char[1000];
    char *buf1 = new char[1000];
    char *tmpbuf = new char[1000];
    char *ipbuf;
    struct sockaddr_in addrfrom = { 0 };
    BOOL bRep = TRUE;
    char a = 0, b = 0;

    ValidateArgs(argc, argv);
    if (0 == g_nInterval ) {
        g_nInterval = 1000;
    }
    if (0 == g_nTimes) {
        g_nTimes = 1;
    }
    
    dwMaxLen = MAXLENT;

    hFile = CreateFile(g_strfilePath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
    hFile1 = CreateFile(g_strfilePath1, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);

    if(!hFile || !hFile1) {  
        wprintf(L"file not exist!");  
    }  

    if((!ReadFile(hFile, (LPVOID)buf,dwMaxLen, &dwLen, NULL)) || dwLen == 0 || (!ReadFile(hFile, (LPVOID)buf1,dwMaxLen, &dwLen1, NULL) || dwLen == 0) || dwLen1 == 0) {  
        wprintf(L" file read failed!");  
    }

    wVersionRequested = MAKEWORD(2,2);  
    nErr = WSAStartup(wVersionRequested, & wsaData);  
    if (0 != nErr) {  
        wprintf(L"Socket 2.2 init failed!");  
        return nErr;  
    }

    if (LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 )  
    {  
        WSACleanup();
        CloseHandle(hFile);
        return 0;  
    }  

    sock = socket(  
        AF_INET,           //UDP,TCP, etc   
        SOCK_DGRAM,        //UDP type   
        IPPROTO_UDP        //protocol   
        );  

    if (INVALID_SOCKET == sock ) {  
        wprintf(L"Socket create failed!");
        WSACleanup();
        return 0;  
    }             
//prepare for the data
    int cCharacters = int(wcslen((const wchar_t*)g_strIpAddress)+1);
    int cbAnsi = cCharacters*2;
    ipbuf = new char[cbAnsi];

    memset(&addrto,0,sizeof(addrto));  
    WideCharToMultiByte(CP_ACP,0, (LPCWSTR)g_strIpAddress,cCharacters,ipbuf,cbAnsi, NULL, NULL);
    addrto.sin_family = AF_INET;  
    addrto.sin_port = htons(162);
    addrto.sin_addr.s_addr = inet_addr(ipbuf);
    addrlen = sizeof(struct sockaddr_in);
   

//send first inform request
    if (sendto(sock, buf, dwLen, 0, (sockaddr*)&addrto, sizeof(addrto)) == SOCKET_ERROR) {
        nErr = WSAGetLastError();
        wprintf(L"WSAGetLastError = %d ", nErr);
        return 0;
    }

RETRY:
//recv report or get request
    if(!recvfrom(sock, tmpbuf, MAXLENT, 0, (sockaddr*)&addrfr, &addrlen))  {
        nErr = WSAGetLastError();
        wprintf(L"WSAGetLastError = %d ", nErr);
        return 0;
    }
//prepare for data(assemble the second file and the time just received)
    if (bRep) {
        a = tmpbuf[g_nIndex1];
        b = tmpbuf[g_nIndex1+1];
    } else {
        a = tmpbuf[g_nIndex3];
        b = tmpbuf[g_nIndex3+1];
    }

    buf1[g_nIndex2] = a;
    buf1[g_nIndex2+1] = b;



//send second inform_request
    if (sendto(sock, buf1, dwLen, 0, (sockaddr*)&addrto, sizeof(addrto)) == SOCKET_ERROR) {
        nErr = WSAGetLastError();
        wprintf(L"WSAGetLastError = %d ", nErr);
        return 0;
    }

    if (g_nTimes--)
    {
        Sleep(g_nInterval);
        goto RETRY;
    }



    closesocket(sock);
    WSACleanup();
    CloseHandle(hFile);
    return 0;  
}  

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值