Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Сетка

29.12.2010, 12:57. Показов 2425. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Попрошу не ржать над темой, но.
1. UDP надо ставить в системе?
2. Как непосредственно работать с сетью через виндузячий API?
2.1. Как создать серверный порт?
2.2. Какие события отвечают за подключение/отключение клиента?
2.3. Какие обязательные действия надо выполнить при подключении/отключении клиента?
2.4. Как клиенту подключиться к серверу?
2.5. Как отправить пакет с сервера и с клиента?
2.6. Какие события отвечают за приём пакетов клиентом и сервером?
2.7. Какие параметры они имеют?
2.8. Как клиенту и серверу непосредственно получить пакет?
2.9. Какие обязательные действия надо выполнить при приёме пакета?
2.10. Как сервер может отключить клиента?
2.11. Как клиент может отключиться сам?
2.12. Предположим, в сети есть один, или несколько серверов с нужным номером порта. Как клиенту определить их адреса?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.12.2010, 12:57
Ответы с готовыми решениями:

Сетка 10*10
Здраствуйте уважаемые програмисты.Помогите пожалуйста.Как нарисовать ровную сетку 10*10 ? Видел пример осцыографа в интернете но,что то так...

Сетка из квадратов
Вобщем задача такая: нужно сделать сетку из n*m квадратов, некоторые из них будут, допустим, белого цвета, другие - черного (что-то типа 1...

Вертикальная сетка
Можно ли использовать цикл чтоб не писать по 20 раз одно и то же, дайте пример плз hdc = GetDC(hWnd); MoveToEx(hdc, 10, 0, NULL); ...

13
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 13:27
многовато вопросов сразу.
UDP не обязателен. ставиться сам потому, что им пользуется служба RFC.

если тебе не MFC, то почитай Программирование сокетов
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
29.12.2010, 14:05  [ТС]
Что за служба такая? Может ли она в принципе отсутствовать в сети на протоколе TCP?

Добавлено через 3 минуты
Для создания сокета используется системный вызов socket.
s = socket(domain, type, protocol);
Что это здесь такое создаётся. Я юзил VCL, там 2 понятия сокета: клиентский сокет и серверный. А здесь это что? Клиентский? Серверный? Конкретный Connection серверного сокета, отвечающий за связь с одним отдельно взятым клиентом? Лично мне не понятно.

Добавлено через 5 минут
В идеале я бы хотел получить текст аналогов сокетов из VCL.

Добавлено через 4 минуты
Правильное начало:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TServerSocket
{
 protected:
 int s;
 int er;
 int *Connections;
 int CountOfConnection;
 public:
 TServerSocket()
 {
  Connections=0;
  CountOfConnection=0;  
  s=socket(AF_INET, SOCK_STREAM, 0);
  er=listen(s, 256);
 }
}
?
Как привязать к номеру порта?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
29.12.2010, 15:31
Цитата Сообщение от taras atavin Посмотреть сообщение
Что за служба такая? Может ли она в принципе отсутствовать в сети на протоколе TCP?
тьфу, RPC, конечно. Remote Procedure Call - служба в Винде.
в сети отсутствовать может. в Винде - скорее всего нет. слишком много других служб от нее зависят, сам можешь посмотреть.
можно лишь поэкспериментировать, блокируя выход UDP файреволом.


Цитата Сообщение от taras atavin Посмотреть сообщение
Что это здесь такое создаётся. Я юзил VCL, там 2 понятия сокета: клиентский сокет и серверный. А здесь это что? Клиентский? Серверный? Конкретный Connection серверного сокета, отвечающий за связь с одним отдельно взятым клиентом? Лично мне не понятно.
под борландом не писал, так что VCL не знаю.
а сокет - он и в Африке сокет.
это то, между чем, собственно, и идет соединение.
здесь показано, как он создается.
он абсолютно одинаковый у клиента и сервера.

Цитата Сообщение от taras atavin Посмотреть сообщение
Правильное начало:...
ну и используй те исходники.
принципы работы сокетов одинаковые, хоть под борландом, хоть под голой WinAPI.

Цитата Сообщение от taras atavin Посмотреть сообщение
Как привязать к номеру порта?
не понял вопрос.
что привязать к номеру порта?

Добавлено через 4 минуты
кстати, и под линуксом работа с сокетами такая-же.
простенький сервер работающий по протоколу TCP/IP, на основе сокетов
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
30.12.2010, 05:35  [ТС]
Цитата Сообщение от Patch Посмотреть сообщение
он абсолютно одинаковый у клиента и сервера.
В VCL это называется коннэкшэн. Вот он одинаковый и соединяет. А сокеты бывают двух видов. Клиентские имеют по одному коннэкшэну, а серверные создают новые коннэкшэны при каждом подключении клиента. Так что не
Цитата Сообщение от Patch Посмотреть сообщение
сокет - он и в Африке сокет.
.
Цитата Сообщение от Patch Посмотреть сообщение
что привязать к номеру порта?
У любого сервера есть номер порта, по которому он работает. Например, http работает по портам 80-му и 81-му, но с каждым клиентом по одному из них. Так вот, у меня вопрос: как повесить соект, например, на 1024-й порт?

Добавлено через 2 минуты
Цитата Сообщение от Patch Посмотреть сообщение
ну и используй те исходники.
А они у меня есть? Мне нужны частичные аналоги тех сокетов.

Добавлено через 4 минуты
Цитата Сообщение от Patch Посмотреть сообщение
принципы работы сокетов одинаковые, хоть под борландом, хоть под голой WinAPI.
В VCL сеть полностью инкапсулирована в классах, чего под голой API не наблюдается. Кроме того, задача - создать сетевые оболочечные классы с идентичным интерфейсом для windows и для ubuntu.

Добавлено через 4 минуты
Предположим, пользователь internet определил свой текущий адрес, переслал по email другому пользователю internet, пользующемуся услугами того же, или другого провайдера, а тот хочет подключить свою машину к машине первого пользователя как к серверу. Могут они юзить UDP? И если у одного ubuntu, то надо ли ему специально ставить этот протокол в системе.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
30.12.2010, 07:14
Цитата Сообщение от taras atavin Посмотреть сообщение
Вот он одинаковый и соединяет. А сокеты бывают двух видов. Клиентские имеют по одному коннэкшэну, а серверные создают новые коннэкшэны при каждом подключении клиента.
опять все в кучу.
сокет - это точка соединения, хоть у клиента, хоть у сервера.
она В ЕДИНСТВЕНОМ экземпляре.
просто потому, что сокет - по определению есть комбинация адреса и номера порта.

а про "коннэкшены"... HTTP сервер, например, получая по сокету запрос от клиента, создает НОВЫЙ сокет. и передает клиенту адрес/порт этого нового сокета. и вот с ним-то HTTP клиент и соединяется, получая страницу WWW.

Цитата Сообщение от taras atavin Посмотреть сообщение
Так вот, у меня вопрос: как повесить соект, например, на 1024-й порт?
создаешь на сервере сокет на порт 1024. и все. в чем проблема?
Цитата Сообщение от taras atavin Посмотреть сообщение
Предположим, пользователь internet определил свой текущий адрес, переслал по email другому пользователю internet, пользующемуся услугами того же, или другого провайдера, а тот хочет подключить свою машину к машине первого пользователя как к серверу. Могут они юзить UDP? И если у одного ubuntu, то надо ли ему специально ставить этот протокол в системе.
могут.
про ubuntu не знаю, руками не щупал, внутренности не изучал.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
30.12.2010, 07:22  [ТС]
ubuntu -это линь такой.

Добавлено через 1 минуту
Так:
Цитата Сообщение от Patch Посмотреть сообщение
создаешь на сервере сокет на порт 1024. и все. в чем проблема?
C++
1
s=socket(AF_INET, SOCK_STREAM, 1024);
?

Добавлено через 4 минуты
Цитата Сообщение от Patch Посмотреть сообщение
сокет - это точка соединения, хоть у клиента, хоть у сервера.
она В ЕДИНСТВЕНОМ экземпляре.
просто потому, что сокет - по определению есть комбинация адреса и номера порта.
ис сразу
Цитата Сообщение от Patch Посмотреть сообщение
HTTP сервер, например, получая по сокету запрос от клиента, создает НОВЫЙ сокет. и передает клиенту адрес/порт этого нового сокета. и вот с ним-то HTTP клиент и соединяется, получая страницу WWW.
. TServerSocket из VCL прим каждом подключении создаёт новый коннэкшэн, но все коннэкшэны висят на одном номере порта, а не на разных. Да и HTTP сервер имеет всего два номера порта, а экземпляров браузеров (HTTP клиентов) на нём может висеть много.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
30.12.2010, 12:54
ну, как еще объяснить?...
ладно, попробую с другого края.
сокет может либо слушать, либо передавать данные.
а пользователей обычно вагон и маленькая тележка.
поэтому на сервере ВСЕГДА есть ОДИН слушающий сокет.
а вот когда к нему подключаются клиенты, он переадресует их на другой сокет.
а сам продолжает слушать.
где-то статейка была... вот! нашел.
Программирование сокетов

Добавлено через 1 минуту
я так понимаю, что Борланд в своем VCL несколько исказил общепринятую терминологию интернет-программирования.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
30.12.2010, 12:59  [ТС]
C++
1
s = socket(domain, type, protocol);
protocol = номер порта?
Цитата Сообщение от Patch Посмотреть сообщение
а вот когда к нему подключаются клиенты, он переадресует их на другой сокет.
Под VCL я обходился одним номером порта на всю прогу. И всё работало.

Добавлено через 1 минуту
Цитата Сообщение от Patch Посмотреть сообщение
что Борланд в своем VCL несколько исказил общепринятую терминологию интернет-программирования.
Что я и пытался сказать, так нет,
сокет - он и в африке сокет
.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
30.12.2010, 13:18
Цитата Сообщение от taras atavin Посмотреть сообщение
protocol = номер порта?
protocol - это протокол. например, TCP, SCTP, UDP, DCCP.

Цитата Сообщение от taras atavin Посмотреть сообщение
Что я и пытался сказать, так нет,
ладно-ладно. не ожидал просто от борланда такой подлости. хотя еще со времен доса его недолюбливаю.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
30.12.2010, 13:21  [ТС]
Цитата Сообщение от Patch Посмотреть сообщение
protocol - это протокол. например, TCP, SCTP, UDP, DCCP.
То есть? Строка? Дескриптор? Куда номер порта запихать?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
30.12.2010, 13:33
та-а-а-ак.
тебе две статьи с примерами и темы на киберфоруме не хватило?
у сервера:
1)создается сокет. s = socket(,,)
2)создается инет-адрес. struct sockaddr_in stSockAddr
3)адрес привязывается к сокету. bind(s,stSockAddr, sizeof(stSockAddr))
4)сокет слушается, пока кто-нибудь не вызовет. listen(s,)
5)принимаем вызов, создавая НОВЫЙ сокет. s1 = accept(s, 0 , 0)
6)передаем/принимаем данные по НОВОМУ сокету. send/recv
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
30.12.2010, 17:07  [ТС]
Цитата Сообщение от Patch Посмотреть сообщение
тебе две статьи с примерами и темы на киберфоруме не хватило?
Я там номера порта не нашёл вообще. А болэнд меня приучил с номера начинать. Поэтому мне и сложно понять.

Добавлено через 53 секунды
Цитата Сообщение от Patch Посмотреть сообщение
1)создается сокет. s = socket(,,)
2)создается инет-адрес. struct sockaddr_in stSockAddr
3)адрес привязывается к сокету. bind(s,stSockAddr, sizeof(stSockAddr))
4)сокет слушается, пока кто-нибудь не вызовет. listen(s,)
5)принимаем вызов, создавая НОВЫЙ сокет. s1 = accept(s, 0 , 0)
6)передаем/принимаем данные по НОВОМУ сокету. send/recv
Где в этой последовательности номер порта?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
30.12.2010, 17:24
Цитата Сообщение от taras atavin Посмотреть сообщение
Где в этой последовательности номер порта?
Цитата Сообщение от taras atavin Посмотреть сообщение
создается инет-адрес. struct sockaddr_in stSockAddr

struct sockaddr_in {
short sin_family;
u_short sin_port; //ЗДЕСЬ!!!
struct in_addr sin_addr;
char sin_zero[8];
};
sockaddr
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.12.2010, 17:24
Помогаю со студенческими работами здесь

Wi-Fi сетка
Купил себе ноутбук. Там есть Wi-Fi. Если купить Сетевую wi-fi карту на комп, то можно ли будет без ещё какого либо дополнительного...

Wi-Fi сетка
Вообщем нужно как-то подрубить 8 компов (ноуты с Wi-Fi), в одну сетку, чтобы на одном запустить сервант, пока ничего не получилось. Если по...

Сетка на QT
Доброго дня. Решил я для себя заняться и поработать в Qt. И вот встал вопрос. Мне получается нужно нарисовать сетку, в которой в...

Сетка
Здравствуйте. Подскажите пожалуйста как сделать сетку в которой будет писатся разная информация. Вот пример: ...

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru