Главная страница
    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.006 c
3-49836
AFROLOV
2002-04-16 17:25
2002.05.16
Как в Access узнать Id (значение поля счетчика) новой записи


1-49975
Sender
2002-04-29 19:26
2002.05.16
Beep-ер


14-50108
MJH
2002-04-05 20:14
2002.05.16
НайтроАмп (NitroAmp)


6-50070
DimaIv
2002-03-02 10:03
2002.05.16
Как испльзуя FastNet получить список файлов http?


4-50171
Fellomena
2002-03-05 16:07
2002.05.16
Вопрос к ASMатикам ;)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский