Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Socket под win32 на API

9.0K
10 августа 2005 года
vov4ik
20 / / 09.08.2005
Доброго дня!

Пытаюсь написать приложение для отправки http-запросов на С. Если кто писал киньте плиз рабочий пример создания сокета, передачи данных и получения ответа (желательно чтобы написано было на API, т.е. с использованием функций socket(), connect(), send(), recv() и т.п.).

Пишу так:

#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <sys/types.h>
#include <winsock.h>
#include <sstream>

int main(int argc, char* argv[])
{
int sock;
char message[5000] = "GET / HTTP/1.0\n\n";
char buf[10000] = "";
SOCKADDR_IN addr;

sock = socket(AF_INET,SOCK_STREAM,0);
if (sock != -1)
printf("> socket created\n");

addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("195.68.222.173");
addr.sin_port = htons (80);
bind (sock,(LPSOCKADDR)&addr, sizeof(struct sockaddr));
connect(sock,(struct sockaddr *)&addr,sizeof(addr));
send(sock, message, sizeof(message), 0);
recv(sock, buf, 100, 0);
printf("%s",buf);
return 0;
}

В резльтате сокет не создается. Немогу понять почему.

Спасибки.
12K
10 августа 2005 года
Automat
7 / / 10.08.2005
Напиши мне на мыло [email]automatical@yandex.ru[/email] и я вышлю тебе всё, что тебе надо по этому вопросу. У меня всё есть. Обращайся.
4
10 августа 2005 года
mike
3.7K / / 01.10.2002
Я делал так:

http://www.codenet.ru/progr/visualc/socket.php
9.0K
10 августа 2005 года
vov4ik
20 / / 09.08.2005
Цитата:
Originally posted by mike
Я делал так:

http://www.codenet.ru/progr/visualc/socket.php


Пробую, как написано в примере. При компиляции ошибки.
syntax error : missing ';' before identifier 'lpWSAData'
и
'WSADATA' : missing storage-class or type specifiers

9.0K
10 августа 2005 года
vov4ik
20 / / 09.08.2005
Цитата:
Originally posted by mike
Я делал так:

http://www.codenet.ru/progr/visualc/socket.php


Совместил пример со своим кодом. Все заработало. написал так:

#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <sys/types.h>
#include <winsock.h>
#include <sstream>

int main(int argc, char* argv[])
{
int sock;
char message[5000] = "GET / HTTP/1.0\n\n";
char buf[10000] = "";
SOCKADDR_IN addr;
WSADATA lpWSAData;

addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("195.68.222.173");
addr.sin_port = htons (80);

WSAStartup(MAKEWORD(1,1),&lpWSAData); // этой функции не хватало
if ((sock = socket(AF_INET,SOCK_STREAM,0)) != -1)
printf("> socket created\n");
if ((bind (sock,(LPSOCKADDR)&addr, sizeof(struct sockaddr))) != 0)
printf("> socket binded\n");
connect(sock,(struct sockaddr *)&addr,sizeof(addr));
send(sock, message, sizeof(message), 0);
recv(sock, buf, 100, 0);
printf("%s",buf);
return 0;
}

Спасибки за помощь!

9.0K
27 августа 2005 года
DarkMaster
36 / / 27.07.2005
прежде чем создавать соккет. соккеты нужно инициализировать с помощью функции
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
:!!!:
299
27 августа 2005 года
3D Bob
885 / / 18.04.2005
Подскажите пожалуйста, для поддержания постоянного соединения, нужно писать самому пинг-понг с идентификатором, или может есть уже встроенные ф-ции?

Да и еще, одного меня арздражает структура SOCKADDR_IN ?:) Какая та она слдишком не читабельная....:D
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог