[Archivе] [Archivе]
CyberGods_Alice 16 сен 2015
my ip
#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<stdlib.h>
#include<fstream>
#include<netinet/in.h>
#include<arpa/inet.h>
#define BUFF_LEN 4096
//---------------------------------------------------------------
int main(void)
{
char buf[BUFF_LEN];
struct hostent *host;
struct sockaddr_in addr;
int sock;
int cnt;
char* MyIP;
//---------------------------------------------------------------
sock = socket (PF_INET,SOCK_STREAM,0);
if(sock==-1) {fprintf(stderr,"socket error.\n");return -1;}
//---------------------------------------------------------------
host=gethostbyname("smtp.list.ru");
if(host==NULL){fprintf(stderr,"host error.\n");return -1;}
//---------------------------------------------------------------
addr.sin_family = AF_INET;
addr.sin_addr= *(struct in_addr*) host->h_addr_list[0];
addr.sin_port=htons(25);
//---------------------------------------------------------------
// Коннектимся к почтовому серверу
if(connect (sock,(struct sockaddr*)&addr,sizeof (addr)) == -1)
{fprintf(stderr,"connect error.\n");return -1;}
// и сразу читаем приветствие telnet
cnt = read (sock,buf,BUFF_LEN);
// Посылаем HELO
strcpy(buf,"HELO aaa.com\n");
write(sock,buf,strlen(buf));
// Читаем информацию о себе включающую IP
cnt = read (sock,buf,BUFF_LEN);
// Проводим разбор полученного
int IPsize=0,offset=0;
bool beg=0;
for(int i=0;i<cnt;i++)
{
if(buf[i]==']'){beg=0;}
if(beg) {IPsize++;}
if(buf[i]=='['){beg=1;offset=i+1;}
}
// Выделяем память для адреса
MyIP = (char*) malloc (IPsize+1);
// Копируем адрес
memcpy(MyIP,buf+offset,IPsize);
// Терминальный ноль
MyIP[IPsize+1]=0;
// Выводим адрес
printf("MyIP=%s \n",MyIP);
// Завершаем сессию
strcpy(buf,"QUIT\n");
write(sock,buf,strlen(buf));
// Читаем остаток информации
cnt = read (sock,buf,BUFF_LEN);
delete (MyIP);
// Закрываем сокет
close (sock);
return 0;
}
//---------------------------------------------------------------
#include<sys/socket.h>
#include<netdb.h>
#include<stdlib.h>
#include<fstream>
#include<netinet/in.h>
#include<arpa/inet.h>
#define BUFF_LEN 4096
//---------------------------------------------------------------
int main(void)
{
char buf[BUFF_LEN];
struct hostent *host;
struct sockaddr_in addr;
int sock;
int cnt;
char* MyIP;
//---------------------------------------------------------------
sock = socket (PF_INET,SOCK_STREAM,0);
if(sock==-1) {fprintf(stderr,"socket error.\n");return -1;}
//---------------------------------------------------------------
host=gethostbyname("smtp.list.ru");
if(host==NULL){fprintf(stderr,"host error.\n");return -1;}
//---------------------------------------------------------------
addr.sin_family = AF_INET;
addr.sin_addr= *(struct in_addr*) host->h_addr_list[0];
addr.sin_port=htons(25);
//---------------------------------------------------------------
// Коннектимся к почтовому серверу
if(connect (sock,(struct sockaddr*)&addr,sizeof (addr)) == -1)
{fprintf(stderr,"connect error.\n");return -1;}
// и сразу читаем приветствие telnet
cnt = read (sock,buf,BUFF_LEN);
// Посылаем HELO
strcpy(buf,"HELO aaa.com\n");
write(sock,buf,strlen(buf));
// Читаем информацию о себе включающую IP
cnt = read (sock,buf,BUFF_LEN);
// Проводим разбор полученного
int IPsize=0,offset=0;
bool beg=0;
for(int i=0;i<cnt;i++)
{
if(buf[i]==']'){beg=0;}
if(beg) {IPsize++;}
if(buf[i]=='['){beg=1;offset=i+1;}
}
// Выделяем память для адреса
MyIP = (char*) malloc (IPsize+1);
// Копируем адрес
memcpy(MyIP,buf+offset,IPsize);
// Терминальный ноль
MyIP[IPsize+1]=0;
// Выводим адрес
printf("MyIP=%s \n",MyIP);
// Завершаем сессию
strcpy(buf,"QUIT\n");
write(sock,buf,strlen(buf));
// Читаем остаток информации
cnt = read (sock,buf,BUFF_LEN);
delete (MyIP);
// Закрываем сокет
close (sock);
return 0;
}
//---------------------------------------------------------------
0 0 0
Для добавления комментариев необходимо авторизоваться
Повелители стихий
Первая коллекционная карточная игра с уникальной...