+ Ответить в теме
Страница 1 из 2
1 2 ПоследняяПоследняя
Показано с 1 по 40 из 70
  1. #1
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327

    Постоянный сокет сервер и клиент[по просьбам форумчан]

    Здравствуйте, извините что не мог рассказать о сокет сервере раньше(дела дела дела).
    Увидев в личке сообщения : forumrulez*а и Let4ik_Rusiia. Сразу создал тему о сокетах.(Им отдельное спс).
    Данный урок расскажет как сделать постоянно принимающий сокет сервер. сервер был получен из рук в руки от vGhost -->> огромное спс.

    Шаг1) Создаём сервер UDP
    Создаём функцию и в функции пишем вот этот код, обязательно поставить РАБОТАТЬ В ФОНЕ, нельзя ставить вызывать при старте

    Скрытый текст:
    PHP код:
    $ipad 'айпи';
    $port 'порт';
    $Socket Socket_Create(AF_INETSOCK_DGRAMGetProtoByName('udp'));
    If(
    $Socket === False)
    {Exit(
    1);}
    If(!
    Socket_Bind($Socket$ipad$port))
    {
        
    Socket_Close($Socket);
       Exit(
    1);
    }
       While(
    True)
    {

        
    Socket_RecvFrom($Socket$RData655350$ClientIP$ClientPort);
     
    // В этом месте  пишем что будет делать сервер после приёма данных пример ->
     
    If( $RData == 0){
    MessageBox("сервер принял цифру 0""сообщение");}

    ////////////////////////////////
        
    If($RData === FALSE)
        {
        Continue;
        }
        ElseIf(
    StrLen($RData) === 0)
        {

            Continue;
        }



    Дополнения к серверу(улутшения).
    Если вы не хотите указывать ip aдрес: программа укажет за вас, проверит наличие интернет соединения,
    в случае ошибки попросит включить интернет.
    Данный код вставлять в Создание
    Скрытый текст:
    PHP код:
    $memo c("memo1"); // в memo1 будет отображаться тексты - интернет работет или интернет не работает
    $memo->text '';
    $host 'google.com';
    //переменная $ip будет содержать ip адрес.
    $obj = new COM ('winmgmts://localhost/root/CIMV2');
    $res $obj->ExecQuery('SELECT * FROM Win32_PingStatus WHERE Address = "' $host '"');

    ForEach(
    $res AS $ping)
    {
        If(
    $ping->StatusCode === 0)
        {
            If(
    StrToLower($host) == $ping->ProtocolAddress)
            {
                
    $memo->text .= $host " is responding\n";
            }
            Else
            {}
            
    $memo->text .= "интернет работает";
              
    $ip $_SERVER[IP_ADDRESS];
             
    //  можно занести в переменную или вывести в едит1, как вам удобно!
               
    }
        Else
        {
            
    $memo->text .="интернет не работает";
    MessageBox("Подключите интернет и перезапустите""Нет интернет соединения");
    app::close();/// в этом случае программа закроется если нет интернета!
        
    }


    Шаг 2) Клиент

    Скрытый текст:
    PHP код:
    $mess ="текст";// в данной переменной текст который нужно отправить!
    $apk "айпи сервера";
    $kport "порт сервера";
    $sock Socket_Create(AF_INETSOCK_DGRAMGetProtoByName('udp'));
    socket_connect($sock$apk$kport);

    socket_write($sock$mess);//отправляем
    socket_close($sock); 

    Код так же помещаем в функцию и ставим работать в фоне.
    Для тех кто в танке
    Для самых самых ,как вызвать функцию, пример: название(); - server();
    Последний раз редактировалось max95; 27.12.2011 в 22:25.
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  2. 10 пользователя(ей) сказали cпасибо:

    :ViRUS: (30.12.2011), bwc (28.12.2011), Cirwos (10.01.2012), duff04 (29.12.2011), forumrulez (28.12.2011), ily2811 (13.01.2012), KiKRee (22.01.2012), vGhost (31.12.2011), Карпатов Олег (27.12.2011), Рома (29.12.2011)

  3. #2
    Мастер Аватар для forumrulez
    Регистрация
    16.10.2010
    Адрес
    Киев
    Сообщений
    1,078
    Спасибо конечно но я уже разобрался, а вот за "Дополнение" отдельное спасибо

  4. #3
    Админ Аватар для vGhost
    Регистрация
    27.07.2011
    Адрес
    Самара
    Сообщений
    2,033
    Не помешает поправить пару мелочей

    Цитата Сообщение от max95 Посмотреть сообщение
    обязательно поставить РАБОТАТЬ В ФОНЕ
    PHP код:
    MessageBox("сервер принял цифру 0""сообщение"); 
    - Не в коем случае не используйте в фоновых ф-ях процедуры типа alert, pre, echo, MessageBox. Это может привести к совершенно неожиданным результатам в работе программы.

    Цитата Сообщение от max95 Посмотреть сообщение
    PHP код:
            If(StrToLower($host) == $ping->ProtocolAddress)
            {
                
    $memo->text .= $host " is responding\n";
            }
            Else
            {} 
    Это в коде совершенно лишнее, если вам надо было только проверить интернет.

    __________________________________________________ ________
    Угу, угу... А потом достал из морозильной камеры - и степлером его, степлером!
    Для новичков
    __________________________________________________ ________
    Я практически совсем не задаю вопросов, не думали почему? Потому что я пользуюсь поиском и всегда нахожу ответы на свои вопросы!

  5. #4
    Пользователь Аватар для Simple
    Регистрация
    31.07.2011
    Сообщений
    159
    Супер. Если в локальной сети будет работать как надо, то огромное спасибо!

  6. #5
    у меня уже давно вопрос..
    возможно ли передать файл таким образом?
    точнее как это сделать?

  7. #6
    Опытный Аватар для bwc
    Регистрация
    25.06.2010
    Адрес
    Иркутск
    Сообщений
    326
    Вопрос: как увеличить размер буфера для данных ?
    Самые успешные проекты все чаще создают неизвестные и маленькие; большие компании все чаще терпят крах. Потому что энтузиазм и вера несоизмеримо важнее денег и связей. Вас будут пытаться убедить в обратном. Но Давид убивает Галиафа, всегда...

  8. #7
    хех.. решил сделать удаленную выключалку))
    рез-тат фаервол блокнул..
    но вот что интересно, мой не блокнул.. а стандартный виндовский на виртуалке блочит

  9. #8
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    Цитата Сообщение от vGhost Посмотреть сообщение
    Не помешает поправить пару мелочей

    - Не в коем случае не используйте в фоновых ф-ях процедуры типа alert, pre, echo, MessageBox. Это может привести к совершенно неожиданным результатам в работе программы.


    Это в коде совершенно лишнее, если вам надо было только проверить интернет.
    Забыл)) надо было подправить спс.
    Последний раз редактировалось max95; 29.12.2011 в 14:50.
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  10. #9
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    bwc

    Хотите файл передать?
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  11. #10
    Опытный Аватар для roxblnfk
    Регистрация
    17.08.2011
    Адрес
    Россия, г. Рыбинск
    Сообщений
    313
    Цитата Сообщение от bwc Посмотреть сообщение
    Вопрос: как увеличить размер буфера для данных ?
    попробуйте socket_set_option
    в качестве параметра optname: SO_SNDBUF и SO_RCVBUF
    сам пока не пробовал, нужды не было

  12. #11
    Как передать файл на другой ПК ?

  13. #12
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    Вот в этом сама и жо*а. Я не могу доделать свой Virtual Scout. Т.к не получается организовать передачу через сокеты.
    Чисто теоретически пытался отправить буфер но сервер выдавал ошибку(
    Последний раз редактировалось max95; 29.12.2011 в 17:48.
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  14. #13
    Цитата Сообщение от max95 Посмотреть сообщение
    Вот в этом сама и жо*а. Я не могу доделать свой Virtual Scout. Т.к не получается организовать передачу через сокеты.
    Чисто теоретически пытался отправить буфер но сервер выдавал ошибку(
    можно заливать файл по фтп и потом сервером скачивать его..
    но это получается в двойне работать, а это долго..
    Последний раз редактировалось Карпатов Олег; 29.12.2011 в 18:13.

  15. #14
    Опытный Аватар для bwc
    Регистрация
    25.06.2010
    Адрес
    Иркутск
    Сообщений
    326
    Цитата Сообщение от max95 Посмотреть сообщение
    Хотите файл передать?
    нет, хотел передать массив размером 2048 kb он на отрез отказывается...
    Последний раз редактировалось bwc; 29.12.2011 в 18:51.
    Самые успешные проекты все чаще создают неизвестные и маленькие; большие компании все чаще терпят крах. Потому что энтузиазм и вера несоизмеримо важнее денег и связей. Вас будут пытаться убедить в обратном. Но Давид убивает Галиафа, всегда...

  16. #15
    Опытный Аватар для bwc
    Регистрация
    25.06.2010
    Адрес
    Иркутск
    Сообщений
    326
    Цитата Сообщение от Карпатов Олег Посмотреть сообщение
    Вот в этом сама и жо*а. Я не могу доделать свой Virtual Scout. Т.к не получается организовать передачу через сокеты.
    Чисто теоретически пытался отправить буфер но сервер выдавал ошибку(
    можно заливать файл по фтп и потом сервером скачивать его..
    но это получается в двойне работать, а это долго..
    можно просто сделать папку шара (она будет как буфер обмена в локальной сети), и по ее средствам передавать файлы друг другу...
    Самые успешные проекты все чаще создают неизвестные и маленькие; большие компании все чаще терпят крах. Потому что энтузиазм и вера несоизмеримо важнее денег и связей. Вас будут пытаться убедить в обратном. Но Давид убивает Галиафа, всегда...

  17. #16
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    Цитата Сообщение от Карпатов Олег Посмотреть сообщение
    можно заливать файл по фтп и потом сервером скачивать его..
    но это получается в двойне работать, а это долго..
    Вот поэтому, я сразу отказался.
    Представ те скрин делается минимум 3 сек + отправка 4 сек = 7с + скачать и отобразить. = программа г.
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  18. #17
    Цитата Сообщение от max95 Посмотреть сообщение
    Вот поэтому, я сразу отказался.
    Представ те скрин делается минимум 3 сек + отправка 4 сек = 7с + скачать и отобразить. = программа г.
    всего из за этого?
    щас vGhost придет, скажет как сделать

  19. #18
    Мастер Аватар для forumrulez
    Регистрация
    16.10.2010
    Адрес
    Киев
    Сообщений
    1,078
    х, лучше не ждать vGhost а на прямую ему вопросы задавать

  20. #19
    Опытный Аватар для roxblnfk
    Регистрация
    17.08.2011
    Адрес
    Россия, г. Рыбинск
    Сообщений
    313
    чё вы тут тупите, неужели такая проблема передать файл сокетами? *<|:-]

  21. #20
    Цитата Сообщение от forumrulez Посмотреть сообщение
    х, лучше не ждать vGhost а на прямую ему вопросы задавать
    я же не только для себя стараюсь, я хочу чтоб все узнавали как это )

  22. #21
    Цитата Сообщение от roxblnfk Посмотреть сообщение
    чё вы тут тупите, неужели такая проблема передать файл сокетами? *<|:-]
    видимо да, раз мы незнаем как это..
    не просвятишь?

  23. #22
    Что то не получается, сделал все как написал max95... запускаю клиент/сервер, сообщение отправляется серверу, но выдает ошибку(ошибка сервера): 1-я строка неправильна(ip адрес), и потом еще куча ошибок...
    Мой сайт: www.SnAkE.uCoz.ua
    Форум: www.SnAkE.Gip-Gip.Ru

  24. #23
    Цитата Сообщение от Рома Посмотреть сообщение
    Что то не получается, сделал все как написал max95... запускаю клиент/сервер, сообщение отправляется серверу, но выдает ошибку(ошибка сервера): 1-я строка неправильна(ip адрес), и потом еще куча ошибок...
    делай лучше по примеру sterwat''a http://community.develstudio.ru/showthread.php?t=2791
    если тебе нужен постоянно слушающий сервер, позже скину свою модификацию
    Последний раз редактировалось Карпатов Олег; 29.12.2011 в 20:50.

  25. #24
    И по примеру sterwat'a тоже неполучается!!!!
    Мой сайт: www.SnAkE.uCoz.ua
    Форум: www.SnAkE.Gip-Gip.Ru

  26. #25
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    Щас выложу проект, а то вы уже говорите что сервер не пашет)
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  27. #26
    Опытный Аватар для roxblnfk
    Регистрация
    17.08.2011
    Адрес
    Россия, г. Рыбинск
    Сообщений
    313
    Цитата Сообщение от Карпатов Олег Посмотреть сообщение
    видимо да, раз мы незнаем как это..
    не просвятишь?
    всё очень просто, нужно передавать по кусочку файла с указанием размера и [номера кусочка || оффсета в файле]
    можно добавить контрольные суммы как кусочков так и файла целиком (хэш файла крайне желателен)

    т.е. получается в самой простой форме:
    1 коннектим
    2 шлём инфу о файле: размер, кол-во и размер кусков
    3 шлём куски
    сервер всё принимает и собирает
    пример если и буду делать то после НГ в лучшем случае и после января в худшем...

  28. #27
    Цитата Сообщение от max95 Посмотреть сообщение
    Щас выложу проект, а то вы уже говорите что сервер не пашет)
    Буду благодарен.
    Мой сайт: www.SnAkE.uCoz.ua
    Форум: www.SnAkE.Gip-Gip.Ru

  29. #28
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    Вот скомпилированный сервер и клиент http://rghost.ru/35665918

    Вот dvs проект сервера и клиента http://rghost.ru/35665958
    почему могло не работать, вы подключили?
    php_sockets.dll

    да кстати почему же например у bwc сразу заработал?
    Ответ: быть внимательным, и правильно скопипастить.

    Да и roxblnfk, спс если сделаете передачу файлов)) и даже если не сделаете всё равно спс.
    Последний раз редактировалось max95; 29.12.2011 в 21:37.
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  30. 3 пользователя(ей) сказали cпасибо:

    Maltazar (29.12.2011), вова77 (29.12.2011), Рома (29.12.2011)

  31. #29
    хД..Щас все попрут чаты делать

  32. #30
    Ученик
    Регистрация
    02.11.2011
    Адрес
    Россия
    Сообщений
    53
    Включаю сервер. При смене раскладки на клавиатуре на русский язык программа(клиент) зависает. Как исправить?
    Последний раз редактировалось Maltazar; 30.12.2011 в 13:06.
    Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик

  33. #31
    Пользователь Аватар для Simple
    Регистрация
    31.07.2011
    Сообщений
    159
    По теме передачи файлов через сокеты: курите документацию в сторону fsockopen

  34. #32
    Мастер Аватар для forumrulez
    Регистрация
    16.10.2010
    Адрес
    Киев
    Сообщений
    1,078
    Цитата Сообщение от malish Посмотреть сообщение
    хД..Щас все попрут чаты делать
    Не факт, новичкам будет сложновато в сокетах, они еще столкнутся с динамическим IP, а продвинутые юзеры могут и через MySql сделать, притом pilip выкладывал в песочнице пример чата на MySql

  35. #33
    Мастер Аватар для forumrulez
    Регистрация
    16.10.2010
    Адрес
    Киев
    Сообщений
    1,078
    Я думаю реализовать передачу файлов не так уж сложно, например у меня получается передавать dvs проекты не теряя их свойства, но при попытке отправки файла, после 2х мб,ошибка, надо поработать с фоновыми фичами, мб что и получится

  36. #34
    Попробовал с другом установить связь, не получается.. че делать? или он не может устанавливать связь между компами?
    Мой сайт: www.SnAkE.uCoz.ua
    Форум: www.SnAkE.Gip-Gip.Ru

  37. #35
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    вот интересненько вышло!!! Кароче проблема если у вас динам ip(сменный) то подключиться не получиться,
    Можете помочь forumrulez?, как такую фигню исправить!!! на вас вся надежда, вы хорошо разбираетесь в сокетах.
    Проверял у кого статический апишник всё работало!
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  38. #36
    Мастер Аватар для forumrulez
    Регистрация
    16.10.2010
    Адрес
    Киев
    Сообщений
    1,078
    Ну смотрите при приеме, на сервере можете ип прописать 0.0.0.0, он будет принимать запросы от всех IP, а для отправки на динамический IP (из клиентской части), можете например при входе в программу(Например у вас стоит клиентская часть, а у вашего друга серверная часть, сервер будет принимать всё запросы(0.0.0.0), но для отправки нужно узнать IP сервера) записывать IP сервера в базу mySql например, т.е. создаёте специальный ID, записываете в базу ID и IP например ID=32, IP=192.168.0.1, затем при входе вы перезаписываете значение, например ID=32, IP=ипшник.
    P.S. Нашел интересный класс розбивает файл на части, и записывает MD5 файла, можно попробовать с помощю foreach отправлять файлы по частям, а при приеме "Склеивать" всё в 1 файл
    UPD:
    А и еще я в сокетах нуб
    Последний раз редактировалось forumrulez; 30.12.2011 в 21:52.

  39. Пользователь сказал cпасибо:

    max95 (30.12.2011)

  40. #37
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    Щас буду пробовать загружать свой головной процессор))
    P.S Если вы нуб в сокетах, то я тогда, можно считать о них даже не слышал.
    если я правильно понял, то я так же хотелс только с айди( сервер отправлял на мой сайт типо такого 123432:192.168.... где 123432 был айди по которому клиент мог узнать айпи)


    Сейчас займусь о результатах отпишусь)) уже стихами
    Последний раз редактировалось max95; 30.12.2011 в 22:02.
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  41. #38
    Мастер Аватар для forumrulez
    Регистрация
    16.10.2010
    Адрес
    Киев
    Сообщений
    1,078
    Цитата Сообщение от max95 Посмотреть сообщение
    Щас буду пробовать загружать свой головной процессор))
    P.S Если вы нуб в сокетах, то я тогда, можно считать о них даже не слышал.
    если я правильно понял, то я так же хотелс только с айди( сервер отправлял на мой сайт типо такого 123432:192.168.... где 123432 был айди по которому клиент мог узнать айпи)
    Да Вам просто требуется реализовать при входе в программу запись нового IP к айдишнику

  42. #39
    Опытный Аватар для max95
    Регистрация
    02.11.2010
    Адрес
    Алтайский край.г.Рубцовск
    Сообщений
    327
    да это уже давно понял, спс огромное.
    Пытаюсь с сокетами научиться работать,вот и получается, что где то не допрочитал то не доглядел, с десь вот и дыры появляются!
    Последний раз редактировалось max95; 30.12.2011 в 22:08.
    Не бывает разницы в возрасте, бывает разница в уме.
    Сервер и клиент на сокетах http://community.develstudio.ru/show...B0%D0%BD/page2

    Здесь могла бы быть ваша реклама--->>>>.....<<<<---Но её не будет.

  43. #40
    Цитата Сообщение от forumrulez Посмотреть сообщение
    Я думаю реализовать передачу файлов не так уж сложно, например у меня получается передавать dvs проекты не теряя их свойства, но при попытке отправки файла, после 2х мб,ошибка, надо поработать с фоновыми фичами, мб что и получится
    т.е. файл до 2х мб передается спокойно, так?

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения