|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Коннект |
|
[решено] Коннект
|
![]() Старожил Сообщения: 398 |
Помогите плиз сделать скрипт состоящий из клиента и сервера. Клиент состоит из окна и 6 кнопок по нажатию кнопки в зависимости от нажатой серверу отправляется символ а тот в свою очередь запускает функцию в зависимости от символа. Пытался делать сам но не конектит, только на локалке а на другой комп не конектит. + Конектиться он долже по паролю.
|
|
------- Отправлено: 15:37, 15-02-2009 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата morgan1991:
|
|
Отправлено: 05:09, 16-02-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо
|
------- Отправлено: 17:45, 16-02-2009 | #3 |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Сделал так:
Сервер: #RequireAdmin ;SERVER!! Start Me First !!!!!!!!!!!!!!! #include <GUIConstants.au3> ; Set Some reusable info ; Set your Public IP address (@IPAddress1) here. Dim $szIPADDRESS = @IPAddress1 Dim $nPORT = 33891 ; Start The TCP Services ;============================================== TCPStartUp() ; Create a Listening "SOCKET". ; Using your IP Address and Port 33891. ;============================================== $MainSocket = TCPListen($szIPADDRESS, $nPORT) ; If the Socket creation fails, exit. If $MainSocket = -1 Then Exit ; Create a GUI for messages ;============================================== ; Initialize a variable to represent a connection ;============================================== Dim $ConnectedSocket = -1 ;Wait for and Accept a connection ;============================================== Do $ConnectedSocket = TCPAccept($MainSocket) Until $ConnectedSocket <> -1 ; Get IP of client connecting Dim $msg, $recv ; GUI Message Loop ;============================================== While 1 $msg = GUIGetMsg() ; GUI Closed ;-------------------- ; Try to receive (up to) 2048 bytes ;---------------------------------------------------------------- $recv = TCPRecv( $ConnectedSocket, 2048 ) ; If the receive failed with @error then the socket has disconnected ;---------------------------------------------------------------- If @error Then TCPShutDown() ShellExecute(@ScriptFullPath) Exit EndIf ; Update the edit control with what we have received ;---------------------------------------------------------------- If $recv <> "" Then seporate($recv) WEnd If $ConnectedSocket <> -1 Then TCPCloseSocket( $ConnectedSocket ) TCPShutDown() Func seporate($reckkk) If $recv = "test" Then test() If $recv = "quit" Then quit() EndFunc Func SocketToIP($SHOCKET) Local $sockaddr = DLLStructCreate("short;ushort;uint;char[8]") Local $aRet = DLLCall("Ws2_32.dll","int","getpeername","int",$SHOCKET, _ "ptr",DLLStructGetPtr($sockaddr),"int_ptr",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 Func test() MsgBox(16, "шгнеш", "гшшгшлршгр") EndFunc Func quit() MsgBox(16, "шгнеш", "гшшгшлршгр") EndFunc ;CLIENT! Start Me after starting the SERVER!!!!!!!!!!!!!!! ; see TCPRecv example #include <GUIConstants.au3> ; Start The TCP Services ;============================================== TCPStartUp() ; Set Some reusable info ;-------------------------- ; Set $szIPADDRESS to wherever the SERVER is. We will change a PC name into an IP Address Dim $szIPADDRESS = InputBox("uuu", "Введите IP адрес сервера:") Dim $nPORT = 33891 ; Initialize a variable to represent a connection ;============================================== Dim $ConnectedSocket = -1 ;Attempt to connect to SERVER at its IP and PORT 33891 ;======================================================= $ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT) Dim $szData ; If there is an error... show it If @error Then MsgBox(4112,"Error","TCPConnect failed with WSA error: " & @error) ; If there is no error loop an inputbox for data ; to send to the SERVER. Else ;Loop forever asking for data to send to the SERVER While 1 ; InputBox for data to transmit $szData = InputBox("Data for Server",@LF & @LF & "Enter data to transmit to the SERVER:") ; If they cancel the InputBox or leave it blank we exit our forever loop If @error Or $szData = "" Then ExitLoop ; We should have data in $szData... lets attempt to send it through our connected socket. TCPSend($ConnectedSocket,$szData) ; If the send failed with @error then the socket has disconnected ;---------------------------------------------------------------- If @error Then ExitLoop WEnd EndIf |
------- Отправлено: 16:56, 05-03-2009 | #4 |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать насколько я понял можно просто в файл сервера воткнуть всё из файла клиента и наооборот, потом поменять имена переменных и порт, и получится двусторонняя связь.
Но вот такой вопросик как сделать чтобы клиент мог конектиться по паролю? Или хотябы скажите как сервер может отсоеденить клиента от себя? И ещё как сделать чтобы можно было с нескольких компов приконектиться к серверу одновреммено? |
|
------- Отправлено: 20:55, 09-03-2009 | #5 |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Так и не получилось у меня создать двустороннюю связь, помогите пожалуйста...
|
------- Отправлено: 23:26, 12-03-2009 | #6 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать что то подсказывает, что это autoit-у тяжело дастят....не думал попробовать сделать на файлах?
к примеру все обращение передовать через ини или базу какую нить... |
------- Отправлено: 02:16, 13-03-2009 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата morgan1991:
#include <GUIConstantsEx.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $szIPLocal = @IPAddress1 Local $szIPRemote = @IPAddress1 Local $LocalPort = 33892 Local $RemotePort = 33891 Local $MainSocket, $GOOEY, $InputSocket=-1, $OutputSocket=-1, $szIP_Accepted Local $Bttn1, $Bttn2, $Edit1, $Edit2 Local $msg, $recv, $szData TCPStartup() $MainSocket = TCPListen($szIPLocal, $LocalPort) If $MainSocket = -1 Then Exit $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 $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 $recv = TCPRecv($InputSocket, 2048) If @error Then $InputSocket = TCPAccept($MainSocket) If $InputSocket <> -1 Then $szIP_Accepted = SocketToIP($InputSocket) Else If $recv<>"" Then GUICtrlSetData($Edit1, $szIP_Accepted &" > "& $recv & @CRLF & GUICtrlRead($Edit1)) EndIf WEnd If $InputSocket <> -1 Then TCPCloseSocket($InputSocket) If $OutputSocket<> -1 Then TCPCloseSocket($InputSocket) 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 |
|
Отправлено: 13:03, 13-03-2009 | #8 |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать amel27, спасибо
|
------- Отправлено: 15:35, 13-03-2009 | #9 |
![]() Старожил Сообщения: 398
|
Профиль | Сайт | Отправить PM | Цитировать Такая вот проблемка конектюсь к серверу, потом одновременно конектюсь с другого компа и у второго клиента с виду всё норм но на самом деле сервер его запросы не обрабатывает, а первый нормально работает. Дак вот такой вопросик: как сделать чтобы конектиться к серверу одновременно мог только один человек? И ещё как сервер может отсоеденить от себя клиент который уже приконектился?
|
------- Отправлено: 21:58, 14-03-2009 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Коннект к удаленному серверу | 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 |
|