示例#1
0
int main(int argc, char **argv)
{
    if (argc != 3 && argc != 4)
    {
        printf("Usage: %s ip server_port [local_port]\n", argv[0]);
        exit(1);
    }
    printf("Hd udp client\n");
    init();
    struct sockaddr_in addr;
    int sock;

    if ( (sock=socket(AF_INET, SOCK_DGRAM, 0)) <0)
    {
        perror("socket");
        exit(1);
    }

    addr.sin_family = AF_INET;
    if(argc == 4) 
        addr.sin_port = htons(atoi(argv[3]));
    else
        addr.sin_port = htons(3000);
    addr.sin_addr.s_addr = INADDR_ANY;
    
    if(bind(sock, (struct sockaddr *)&addr, sizeof(addr))<0)
    {
        perror("bind error");
        exit(1);
    }

    pid_t recv_pid = fork();
    if(recv_pid == 0)
    {
        printf("son process\n");
        recv_process(sock);
    }
    else
    {
        addr.sin_family = AF_INET;
        addr.sin_port = htons(atoi(argv[2]));
        struct hostent *hostinfo;
 //       char buff[512]="{'gwid':'1234567890'}";
        while (1)
        {
 //           gets(buff);
            hostinfo = gethostbyname(argv[1]);
            while(hostinfo == NULL)
            {            
                sleep(5);
                hostinfo = gethostbyname(argv[1]);
            }
            addr.sin_addr.s_addr = *(unsigned int *)hostinfo->h_addr_list[0];
            int n;
            n = sendto(sock, send_buff, 512, 0, (struct sockaddr *)&addr, sizeof(addr));
            if (n < 0)
            {
                perror("sendto");
                close(sock);
                break;
            }
            sleep(PING_TIME);
        }
    }
    close(sock);
    return 0;
}
示例#2
0
int main(){
	recv_process(config_with_ctl,send_ok,NULL);
}