Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

Подключение через Socket по WinApi помогите!!!!!   Найти похожие ветки 

 
BlackLord   (2002-03-02 16:41) [0]

Как осуществить связь сервера и клиента TCP/IP с помащью WinApi пожайлуста покажите пример без VCL


 
VuDZ   (2002-03-02 18:49) [1]

а оно тебе надо?
читай в MSDN про socket(), recv(), accept(), bind() - много интересного узнаешь


 
SV   (2002-03-02 20:04) [2]

Вот пример, правда под UNIX, но сокеты и в Африке сокеты. Это простейший WEB-сервак.
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>

#define PORTNUM 8080
#define BACKLOG 5
#define BUFLEN 80

#define FNFSTR "404 Error File Not Found "
#define BRSTR "Bad Request "

int main(int argc, char **argv)
{
struct sockaddr_in own_addr, party_addr;
int sockfd, newsockfd, filefd;
int party_len;
char buf[BUFLEN];
int len;
int i;
/* создаем сокет */
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
printf("can"t create socket\n");
return 0;
}
/* связываем сокет */
memset(&own_addr, 0, sizeof(own_addr));
own_addr.sin_family = AF_INET;
own_addr.sin_addr.s_addr = INADDR_ANY;
own_addr.sin_port = htons(PORTNUM);
if (bind(sockfd, (struct sockaddr *) &own_addr,
sizeof(own_addr)) < 0)
{
printf("can"t bind socket!");
return 0;
}

/* начинаем обработку запросов на соединение */
if (listen(sockfd, BACKLOG) < 0)
{
printf("can"t listen socket!");
return 0;
}

while (1) {
memset(&party_addr, 0, sizeof(party_addr));
party_len = sizeof(party_addr);
/* создаем соединение */
if ((newsockfd = accept(sockfd, (struct sockaddr *)
&party_addr, &party_len)) < 0)
{
printf("error accepting connection!");
return 0;
}

if (!fork())
{
/*это – сын, он обрабатывает запрос и посылает ответ*/
close(sockfd); /* этот сокет сыну не нужен */
if ((len = recv(newsockfd, &buf, BUFLEN, 0)) < 0)
{
printf("error reading socket!");
return 0;
}
/* разбираем текст запроса */
printf("received: %s \n", buf);
if (strncmp(buf, "GET /", 5))
{ /*плохой запрос!*/
if (send(newsockfd, BRSTR, strlen(BRSTR) + 1, 0) != strlen(BRSTR) + 1)
{
printf("error writing socket!");
return 0;
}

shutdown(newsockfd, 1);
close(newsockfd);
return 0;
}

for (i=5;buf[i] && (buf[i] > " ");i++);
buf[i] = 0;
/* открываем файл */
if((filefd = open(buf+5, O_RDONLY)) < 0) {
/* нет файла! */
if (send(newsockfd, FNFSTR, strlen(FNFSTR) + 1, 0) != strlen(FNFSTR) + 1)
{
printf("error writing socket!");
return 0;
}
shutdown(newsockfd, 1);
close(newsockfd);
return 0;
}

/* читаем из файла порции данных и посылаем их клиенту */
while (len = read(filefd, &buf, BUFLEN))
if (send(newsockfd, buf, len, 0) < 0) {
printf("error writing socket!");
return 0;
}
close(filefd);
shutdown(newsockfd, 1);
close(newsockfd);
return 0;
}

/* процесс – отец. Он закрывает новый сокет и
продолжает прослушивать старый */
close(newsockfd);
}
}


 
SV   (2002-03-02 20:08) [3]

P.S. Здесь исп. Сокеты 1.1 Если надо 2.0 смотри http://www.socketaddr.com
/Удачи/
/SV/



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
14-50094
Ежик
2002-04-04 10:30
2002.05.16
Не знаю как у Вас, а у меня Жена вечно ворчит....


1-50057
turonix
2002-05-02 15:33
2002.05.16
Как в подпрограмму передать динамический двумерный массив и вичис


14-50089
LazorenkoX
2002-04-04 22:09
2002.05.16
Linux


6-50061
esprit
2002-03-04 03:47
2002.05.16
Запуск по сети


7-50150
Yevhen Bilevych
2001-11-19 13:53
2002.05.16
Декомпилятор для HTML help?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский