Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Коннект

Ответить
Настройки темы
[решено] Коннект

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: morgan1991
Дата: 15-02-2009
Помогите плиз сделать скрипт состоящий из клиента и сервера. Клиент состоит из окна и 6 кнопок по нажатию кнопки в зависимости от нажатой серверу отправляется символ а тот в свою очередь запускает функцию в зависимости от символа. Пытался делать сам но не конектит, только на локалке а на другой комп не конектит. + Конектиться он долже по паролю.

-------
Хочу научиться писать драйвера на с++


Отправлено: 15:37, 15-02-2009

 

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


И вот по ходу ещё вопросик возник:
Почему не передаются длинные значения? Например 40 слов разделённые "|". Каждое слово гдето из 8 символов. Это както можно поправить?

-------
Хочу научиться писать драйвера на с++


Отправлено: 14:06, 15-03-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Или хотябы скажите ктонибудь как передать одномерный массив?

-------
Хочу научиться писать драйвера на с++


Отправлено: 00:09, 18-03-2009 | #12


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
Почему не передаются длинные значения? »
тогда ж можно передовать по частям...


это к той прожке, что инфо собирает с компа собираетесь прикрутить?
если да - то гараздо проще на файлах.
даже стоит попробовать sql, если не ошибаюсь в udf-ах по ней есть.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 02:29, 18-03-2009 | #13


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата proxy:
это к той прожке, что инфо собирает с компа собираетесь прикрутить? »
нет...
Цитата proxy:
даже стоит попробовать sql, если не ошибаюсь в udf-ах по ней есть. »
Пробовал с бд круить по хэлпу, но.... там стока всего...
По частям тоже не понятно, можно передавать номер части через |, но в это время серверу может передаться чёнить ещё, да и как сделать чтобы сервер ждал пока придёт определённая часть?

-------
Хочу научиться писать драйвера на с++


Отправлено: 08:33, 18-03-2009 | #14


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


с серваками хз ))))
а вот на файлах думаю легко можно сделать, sql еще не смотрел, но как минимум тот же txt легко покатит )

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 08:45, 18-03-2009 | #15


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата proxy:
а вот на файлах думаю легко можно сделать »
т.е. можно файлик передать?
А как?

-------
Хочу научиться писать драйвера на с++


Отправлено: 15:48, 18-03-2009 | #16


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
Почему не передаются длинные значения? Например 40 слов разделённые "|". Каждое слово гдето из 8 символов. »
странно - передал без проблем по сетке 100 слов по 9 букв с разделителем, т.е. 500 знаков

Цитата morgan1991:
Такая вот проблемка конектюсь к серверу, потом одновременно конектюсь с другого компа и у второго клиента с виду всё норм но на самом деле сервер его запросы не обрабатывает, а первый нормально работает. Дак вот такой вопросик: как сделать чтобы конектиться к серверу одновременно мог только один человек? »
например так: сервер - создает сокет с очередью длинной 1 (3-й параметр TCPListen), принимает только первое соединение, открывает/закрывает только весь сокет целиком. Клиент - делает попытку коннекта и при успехе сразу делает попытку второго коннекта, забивая очередь... тогда любой "третий" получит "отлуп", пробовал - работает

Отправлено: 16:43, 18-03-2009 | #17


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата amel27:
странно - передал без проблем по сетке 100 слов по 9 букв с разделителем, т.е. 500 знаков »
сори, у меня ошибка была.
Цитата amel27:
создает сокет с очередью длинной 1 (3-й параметр TCPListen) »
а если поставить 0, то будет конектиться только 1 человек? Или будет без ограничений?

-------
Хочу научиться писать драйвера на с++


Отправлено: 17:38, 18-03-2009 | #18


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
если поставить 0, то будет конектиться только 1 человек? Или будет без ограничений? »
этот параметр влияет на длину очереди неподтвержденных запросов на соединение, а не на количество соединений... у меня получилось, что 0 и 1 дают одинаковую длину =1, т.е. если сервер подтверждает только один запрос (при этом он удаляется из очереди), все остальные будут падать в очередь до тех пор, пока она не заполнится, после этого все остальные попытки будут сервером отвергаться
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:06, 19-03-2009 | #19


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


мысль пришла - сервер может сам отрубить свою очередь таким же образом,
предыдущий вариант с ограничителем:
Код: Выделить весь код
#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)

Example()

Func Example()
    Local $szIPLocal  = @IPAddress1
    Local $szIPRemote = @IPAddress1
    Local $LocalPort  = 33890
    Local $RemotePort = 33891

    Local $TempSocket, $MainSocket=-1, $GOOEY, $InputSocket=-1, $OutputSocket=-1, $szIP_Accepted
    Local $Bttn1, $Bttn2, $Edit1, $Edit2
    Local $msg, $recv, $szData

    TCPStartup()

    $GOOEY = GUICreate("My Server (IP: " & $szIPLocal & ")", 300, 250)
    $Edit1 = GUICtrlCreateEdit("", 10, 10, 280, 180)
    $Edit2 = GUICtrlCreateEdit("", 10, 190, 280, 20, 0)
    $Bttn1 = GUICtrlCreateButton("Connect!", 10, 217, 120)
    $Bttn2 = GUICtrlCreateButton("Send Text", 170, 217, 120)
    GUISetState()

    While 1
        If $MainSocket = -1 Then $MainSocket = TCPListen($szIPLocal, $LocalPort, 1)
        If $MainSocket <> 1 Then
            If $InputSocket= -1 Then
                $InputSocket = TCPAccept($MainSocket)
                If $InputSocket <> -1 Then TCPConnect($szIPLocal, $LocalPort)
            Else
                $szIP_Accepted = SocketToIP($InputSocket)
                $recv = TCPRecv($InputSocket, 2048)
                If @error Then
                    TCPCloseSocket($InputSocket)
                    TCPCloseSocket($MainSocket )
                    $MainSocket = -1
                    $InputSocket= -1
                Else
                    If $recv<>"" Then GUICtrlSetData($Edit1, $szIP_Accepted &" > "& $recv & @CRLF & GUICtrlRead($Edit1))
                EndIf
            EndIf
        EndIf

        $msg = GUIGetMsg()
        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
        If $msg = $Bttn1 Then
            If GUICtrlRead($Bttn1)="Connect!" Then
                $OutputSocket = TCPConnect($szIPRemote, $RemotePort)
                If @error Then
                    MsgBox(4112, "Error", "TCPConnect failed with WSA error: " & @error)
                Else
                    GUICtrlSetData($Bttn1, "Disconnect!")
                EndIf
            Else
                If $OutputSocket<> -1 Then TCPCloseSocket($OutputSocket)
                $OutputSocket=-1
                GUICtrlSetData($Bttn1, "Connect!")
            EndIf
        EndIf

        If $msg = $Bttn2 Then
            $szData = GUICtrlRead($Edit2)
            If $OutputSocket<>-1 And $szData<>"" Then
                TCPSend($OutputSocket, $szData)
                GUICtrlSetData($Edit1, $szIPLocal &" > "& $szData & @CRLF & GUICtrlRead($Edit1))
            EndIf
        EndIf
    WEnd

    If $InputSocket <> -1 Then TCPCloseSocket($InputSocket)
    If $OutputSocket<> -1 Then TCPCloseSocket($InputSocket)
    If $MainSocket  <> -1 Then TCPCloseSocket($MainSocket)
    TCPShutdown()
EndFunc   ;==>Example

Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet
    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
            "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
        $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
        If Not @error Then $aRet = $aRet[0]
    Else
        $aRet = 0
    EndIf
    $sockaddr = 0

    Return $aRet
EndFunc   ;==>SocketToIP
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:55, 19-03-2009 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Коннект

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Коннект к удаленному серверу Artem-Samsung Вебмастеру 1 13-08-2009 01:06
[решено] Обрывается VPN подключение. Коннект с Win XP на Win server 2003 _soldat_ Microsoft Windows NT/2000/2003 3 06-12-2008 02:16
[решено] [решено] медленный коннект к ftpd pom3ec Общий по FreeBSD 11 17-11-2006 19:57
Коннект с Инетом !!! The Time Microsoft Windows 95/98/Me (архив) 1 06-05-2005 07:02
Коннект по ФТП byka Сетевые технологии 9 14-05-2004 00:18




 
Переход