Ключевые слова: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)
Я только начинаю программить сетевые приложения , как вы думаете , есть смысл использовать дополнительные библиотеки ( вроде АСЕ ) и если да , то какие из них лучше и легче в восприятии ?
Если не сложно , ответ пришлите на мыло Stierus@bk.ru