[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Savannah-register-public] [task #4025] Submission of Star Voyager - The
From: |
Gabor Unger |
Subject: |
[Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim |
Date: |
Mon, 9 May 2005 14:11:15 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050416 Firefox/1.0.3 |
Follow-up Comment #6, task #4025 (project administration):
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc.
*/
/********************************************************************
* Description:Server list ring class header
* Author: Gabor Unger
* Created at: Fri Apr 29 23:42:23 CEST 2005
* Computer: magic
* System: Linux 2.6.11-fw2 on i686
*
* Copyright (c) 2005 All rights reserved.
*
********************************************************************/
#include<sys/socket.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<netdb.h>
#include <fcntl.h>
#include <string.h>
class master
{
private:
int child_pid; //A gyermek processz azonos��a
int Szerver_Socket;
int port;
#define MAX_Masters 5
#define MAX_Servers 40
#define MAX_Clients 5
int SZERVER_List[MAX_Servers];
int MASTER_List[MAX_Masters];
fd_set Selects_Sockets;
timeval timeout;
int Readable_Sockets;
public:
master()
{
/*A fork fuggveny megduplazza a processzt*/
printf("Child process starting ");
child_pid=fork();
if (child_pid<0){
printf("Child process starting Error");
exit(-1);
}
/*megvizsg�juk ez melyik p�d�y*/
if( child_pid==0 ){
/*Ha ez a gyermek, akkor lefut a setup_master() fggv�y
� csatlakozunk a l�cba*/
printf("Child processz");
setup_master();
}
/*Ha nem ez a gyermek processz, akkor ezzel az oszt�yal nem kell
t��ni t�bet.*/
}
int getdomain()
{
hostent* myip_host;
in_addr* myip_ip;
sockaddr_in myip_address;
int myip_sock;
FILE *myip_csatorna;
myip_host = gethostbyname("myip.hu");
myip_ip=( in_addr *)(myip_host->h_addr);
myip_sock = socket(PF_INET, SOCK_STREAM, 0);
myip_address.sin_addr =*myip_ip;
myip_address.sin_port = htons(80);
myip_address.sin_family = AF_INET;
printf("Get domain name.\n");
if(connect(myip_sock, (struct sockaddr*)&myip_address,
sizeof(myip_address))==0)
{
printf("Connection Ok.\n");
myip_csatorna = fdopen(myip_sock, "r+");
fprintf(myip_csatorna, "GET
http://myip.hu/update/updateip.phtml?user_name=aimmaster&password=&domain=myip.hu
HTTP/1.0\r\n\r\n");
}
printf("IP cim: %s\n",inet_ntoa(*myip_ip));
fclose(myip_csatorna);
}
int setup_master()
{
hostent* master_host;
in_addr* master_ip;
sockaddr_in master_address;
int master_sock;
FILE *master_csatorna;
port=3501;
master_host = gethostbyname("aimmaster.myip.hu");
master_ip=( in_addr *)(master_host->h_addr);
master_sock = socket(PF_INET, SOCK_STREAM, 0);
master_address.sin_addr =*master_ip;
master_address.sin_port = htons(port);
master_address.sin_family = AF_INET;
if (connect(master_sock, (struct sockaddr*)&master_address,
sizeof(master_address))==0){
}else{
pri_master();
}
}
int pri_master()
{
//Socket a k��ek fogad��a
sockaddr_in szerver_address;
//Lefoglaljuk a domaint
getdomain();
//L�rehozzuk a socketet
Szerver_Socket = socket(AF_INET, SOCK_STREAM, 0);
if(Szerver_Socket < 0)
{
perror("Error creating server socket.\n");
exit(-1);
}
//Nemblokol��a ��juk
SetNonblocking(Szerver_Socket);
//Szgs�es mem�ia lefoglal�a
memset((char *) &szerver_address, 0, sizeof(szerver_address));
//alapvet�adatok kit�t�e
szerver_address.sin_family = AF_INET;
szerver_address.sin_addr.s_addr = htonl(INADDR_ANY);
szerver_address.sin_port = htons(port);
//Socket porthoz k��e
if(bind(Szerver_Socket, (struct sockaddr *) &szerver_address,
sizeof(szerver_address)) < 0)
{
perror("bind");
exit(1);
}
//Port megnyit�a kommunik�i�a
if(listen(Szerver_Socket,2) < 0)
{
perror("listen");
exit(1);
}
//F�urok
while (1)
{
BuildSelectsList();
timeout.tv_sec = 1;
timeout.tv_usec = 0;
/* A select meghivasa. Ez akkor ter vissza, ha a masodik
argumentumban megadott socketekbol lehet olvasni (vagy ha
bontodott a kapcsolat, akkor egy EOF olvashato), vagy ha a
timeout lejart. */
Readable_Sockets = select(FD_SETSIZE, &Selects_Sockets, (fd_set
*) 0,
(fd_set *) 0, &timeout);
if(Readable_Sockets == 0)
{
/* Timeout tortent, nincs olvasasra varo socket. */
}
else
{
/* Feldolgozzuk az olvasasra varo socketeket. */
AnaliseSockets();
}
}
}
void SetNonblocking(int sock)
{
int opts;
opts = fcntl(sock,F_GETFL);
opts = (opts | O_NONBLOCK);
fcntl(sock,F_SETFL,opts);
}
//Ez a fggv�y a Linux Programoz� c� k�yv
alapj� k�zlt!
void BuildSelectsList()
{
int i;
/* A select lista felallitasa. Eloszor belerakjuk szerver
socketet, majd a kliens socketeket. */
/* Kiuritjuk a halmazt. */
FD_ZERO(&Selects_Sockets);
/* A server socket hozzaadasa a figyelendo halmazhoz. */
FD_SET(Szerver_Socket,&Selects_Sockets);
/* A Szerver socketek hozzaadasa. */
for(i = 0; i < MAX_Servers; i++)
{
if (SZERVER_List[i] != 0)
{
FD_SET(SZERVER_List[i],&Selects_Sockets);
}
}
/* A Master socketek hozzaadasa. */
for(i = 0; i < MAX_Masters; i++)
{
if (MASTER_List[i] != 0)
{
FD_SET(MASTER_List[i],&Selects_Sockets);
}
}
}
int AnaliseSockets()
{
}
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/task/?func=detailitem&item_id=4025>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Gabor Unger, 2005/05/01
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Gabor Unger, 2005/05/05
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Jonathan Gonzalez V., 2005/05/09
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Gabor Unger, 2005/05/09
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim,
Gabor Unger <=
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Gabor Unger, 2005/05/09
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Gabor Unger, 2005/05/09
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Jonathan Gonzalez V., 2005/05/11
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Gabor Unger, 2005/05/12
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Jonathan Gonzalez V., 2005/05/12
- [Savannah-register-public] [task #4025] Submission of Star Voyager - The new Aim, Jonathan Gonzalez V., 2005/05/14