🧙Конкурс сказок!
[Archivе]
(OFF) 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;
}
//---------------------------------------------------------------

Комментарии (1)

Тема перенесена Dephkaleon из [с++] в [Archivе] (28 сен 2015)
Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
[Archivе]
Интерны
Увлекательная игра в больничку
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play