Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/55: Рейтинг темы: голосов - 55, средняя оценка - 4.75
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649

Работа с сокетами. Создание сокета сервера

18.11.2011, 11:50. Показов 12113. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проверьте, пожалуйста программу (она еще не дописана до конца), выскажите замечания.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdlib.h>
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <ws2tcpip.h>
#include <iostream.h>
 
#pragma comment(lib,"ws2_32.lib")
 
 
int main (void)
{
    //Èíèöèàëèçèðóåì áèáëèîòåêó WinSock ñ ïðîìîùüþ âûçîâà ôóíêöèè WSAStartup 
    
    WSADATA wsaData;
 
    if (WSAStartup (MAKEWORD(2,2), &wsaData)==0) 
    {
        //Ôóíêöèÿ âîçâðàùàåò íóëåâîå çíà÷åíèå, èíèöèàëèçàöèÿ óäàëàñü
        // Ïðîâåðÿåì åñëè ñòàðøàÿ âåðñèÿ áîëüøå èëè ðàâíà òðåáóåìîé
        if (LOBYTE (wsaData.wVersion) >= 2)
        {
            //Âûçûâàåì ðàçëè÷íûå WinSock ôóíêöèè
        }
        else
        {
            //Òðåáóåìàÿ âåðñèÿ íåäîñòóïíà
        }
 
        //Îñâîáîæäàåì WinSock
        if (WSACleanup () !=0)
        {
            //Îñâîáîæäåíèå íå óäàëîñü
        }
    }
    else
    {
        //Ôóíêöèÿ âîçâðàùàåò íåíóëåâîå çíà÷åíèå, èíèöèàëèçàöèÿ íå óäàëàñü
    }
    
    //Ñîçäàíèå ñîêåòà Server
    SOCKET Server;
        Server = socket (AF_INET, SOCK_STREAM, 0);
        //AF_INET ïðîòîêîë Èíòåðíåòà (IP)
        //SOCK_STREAM ïîòîêîâûé ñîêåò
        //0 ïî óìîë÷àíèþ âûáèðàåòñÿ TCP ïðîòîêîë
    
    //Åñëè íå óäàëîñü ñîçäàòü ñîêåò
    if (Server==INVALID_SOCKET)
    {
        cout << "Error socket " << WSAGetLastError() <<"\n";
        WSACleanup (); // Äåèíèöèàëèçàöèÿ áèáëèîòåêè WinSock
        return -1;
 
    }
    
    //Ñâÿçûâàíèå ñîêåòà Server ñ ëîêàëüíûì àäðåñîì (IP-àäðåñ óçëà è íîìåð ïîðòà)
    sockaddr_in ServerAddr;
    ServerAddr.sin_family = AF_INET;
    ServerAddr.sin_port = htons(8000);
    ServerAddr.sin_addr.S_un.S_addr = inet_addr("192.168.2.80");
    
    if (bind (Server, (sockaddr*)&ServerAddr, sizeof(ServerAddr)))
    {
        //Ôóíêöèÿ âîçâðàùàåò íåíóëåâîå çíà÷åíèå, îøèáêà
        cout << "Error socket " << WSAGetLastError() <<"\n";
        closesocket(Server); //Çàêðûâàåì ñîêåò Server
        WSACleanup (); // Äåèíèöèàëèçàöèÿ áèáëèîòåêè WinSock
        return -1;
    }   
 
    //Ïåðåâîä ïîòîêîâîãî ñåðâåðà â ðåæèì îæèäàíèÿ ïîäêëþ÷åíèé êëèåíòà
    if (listen (Server, SOMAXCONN)) //SOMAXCONN óñòàíàâëèâàåò ìàêñèìàëüíîå êîëè÷åñòâî îæèäàåìûõ ñîåäèíåíèé
    {
        //Ôóíêöèÿ âîçâðàùàåò íåíóëåâîå çíà÷åíèå, îøèáêà
        cout << "Error socket" << WSAGetLastError() <<"\n";
        closesocket(Server); //Çàêðûâàåì ñîêåò Server
        WSACleanup (); // Äåèíèöèàëèçàöèÿ áèáëèîòåêè WinSock
        return -1;
    }
    cout << "Waiting...\n";
 
    SOCKET Client; //Ñîêåò äëÿ êëèåíòà
    sockaddr_in ClientAddr; // Àäðåñ êëèåíòà (çàïîëíÿåòñÿ ñèñòåìîé)
 
    int ClientAddrSize = sizeof(ClientAddr);
 
    //Ïîäòâåðæäåíèå ïîäêëþ÷åíèÿ êëèåíòà ê ñîêåòó Server
    Client = accept(Server, (sockaddr*)&ClientAddr, &ClientAddrSize);
    if (Client==INVALID_SOCKET)
    {
        //Äåéñòâèÿ â ñëó÷àå îøèáêè
    }
 
 
 
return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2011, 11:50
Ответы с готовыми решениями:

Определить отключение сокета от сервера
Нашёл пару тем на форуме но не понял как сделать :) Там написано что при нормальном отключение сервер шлёт сообщение длиной 0 байт, но как...

Считывание ответа сервера из сокета
Всем добрый вечер! Недавно начал работать с сокетами и почти сразу столкнулся с проблемой - не могу считать ответ сервера. Функция recv()...

Как получить IP-адрес сервера из его сокета?
Всем добрый день. Помогите, пожалуйста, разобраться. Есть клиент серверное приложение на сокетах. Серверная часть: ...

42
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
19.11.2011, 17:08
Студворк — интернет-сервис помощи студентам
niXman,
Цитата Сообщение от niXman Посмотреть сообщение
тебе это не нужно.
а как это?
0
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
21.11.2011, 12:42  [ТС]
А если 8000 порт для сокета сервера - это по заданию, то какой порт нужно прописать в программе, если я хочу проверить отработку программы на cвоем компьютере?
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
25.11.2011, 17:45
Цитата Сообщение от Heidel Посмотреть сообщение
А если 8000 порт для сокета сервера - это по заданию, то какой порт нужно прописать в программе, если я хочу проверить отработку программы на cвоем компьютере?
тоже 8000
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2011, 17:45

Использование сокета в качестве сервера или клиента по ситуации
В большинстве клиент-серверных приложений сначала запускают сервер , затем клиентов. Но захотелось автоматизации , те автоматического...

Из-за чего событие чтение сокета у сервера может вызываться бесконечно?
Из за чего событие чтение у сервера может вызываться бесконечно? Если закрыть клиент как программу, то событие чтения на сервере вылетает...

Работа с сокетами
как вырубить локальный клиент?

Работа с сокетами
Доброго времени суток уважаемые форумчане. Давно хотел заняться изучением работы с сокетами в Делфи, и вот наконец-то руки дошли. Сразу...

Работа с сокетами
Пишу распределенное приложение. Сервер должен реагировать на множество клиентов. Для сервера написал что-то такое : server =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Новые блоги и статьи
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru