The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

the tcp connecting with using BSD Socket API (socket example)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: socket, example,  (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _ From : Vadim Radionov 2:4616/8.8 16 Jul 98 10:58:52 Subj : the tcp connecting with using BSD Socket API ________________________________________________________________________________ Доброе утро, Aleksandr Fominih! _м_ Понедельник 13 июля 1998г. 00:33, Aleksandr Fominih писал(а) к All: AF> Покажите, плиз, пример самой AF> простой сетевой програмки: открыть tcp соединение на порт XXX по AF> адресу aaa.bbb.ccc.ddd и переслать туда что-нибудь и не закрывать AF> соединение никогда(ждать что придет оттуда). Hиже следует простенький пример, который делает то, что ты просил, плюс преобразует имя хоста, переданного в командной строке, в inet адрес. Для понимание этого примера стоит ознакомится c такими функциями из Socket API как: int socket( domain, type, protocol ), int connect( socket, name, name_size ). === Cut === #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #define MESSAGE "Скажите как его зовут" /* * Эта программа создает socket и инициализирует связь с socket'ом, переданным * в командной строке. Затем посылается через это соединение сообщение MESSAGE * и ожидается ответ. После чего печатается ответ и соединение закрывается. * Форма командной строки: хост номер_порта. */ main( argc, argv ) int argc; char *argv[]; { int sock; struct sockaddr_in server; struct hostent *hp, *gethostbyname(); char buf[1024]; /* Create socket */ sock = socket(AF_INET, SOCK_STREAM, 0); if(sock < 0) { perror("opening stream socket"); exit(1); } /* Connect socket using name specified by command line. */ server.sin_family = AF_INET; hp = gethostbyname(argv[1]); if(hp == 0) { fprintf(stderr, "%s: unknown host\n", argv[1]); exit(2); } memcpy(&server.sin_addr, hp->h_addr, hp->h_length); server.sin_port = htons(atoi(argv[2])); if(connect(sock, &server, sizeof(server)) < 0) { perror("connecting stream socket"); exit(1); } if( write(sock, MESSAGE, sizeof(MESSAGE) ) < 0) perror("writing on stream socket"); if( (len = read(sock, buf, sizeof( buf ))) < 0) perror("reading from stream socket"); else { buf[ len ] = 0; printf( Server replied: %s", buf ); } close(sock); } === Cut === AF> Открывать чужие исходники пробывал, уж слишком AF> наворочено чтоб разобраться такому зеленому, как я. :( RVP. --- GoldED/386 3.00.Alpha5+ * Origin: No origin (2:4616/8.8)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
 
  • 1, Stierus, 14:05, 19/11/2003 [ответить] [смотреть все]
  • +/
    Я только начинаю программить сетевые приложения , как вы думаете , есть смысл использовать дополнительные библиотеки ( вроде АСЕ ) и если да , то какие из них лучше и легче в восприятии ?
    Если не сложно , ответ пришлите на мыло Stierus@bk.ru
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor