Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Problem z kontrolką WinSock przy poleceniu - Winsock.SendData "Polecenie"
Kris126




Typ: neutral
Postów: 32
Zarejestrowany: Mar 2004
Problem z kontrolką WinSock przy poleceniu - Winsock.SendData "Polecenie"

Może mi ktoś wytłumaczyć prztczynę gdy wysyłam polecenie
    Winsock1.SendData "polecenie"
wyskakuje komunikat z błedem o treści:
"Wrong protocol or connection state for the requested transaction or requeset"

Kod na serwerze
Private Sub Form_Load()
    Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    Winsock1.Close
    Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim zmienna As String
    Winsock1.GetData zmienna, vbString
    Shell zmienna, vbNormalFocus
End Sub

Kod w kiliencie:

Private Sub Command1_Click()
    Winsock1.Connect "\\Asus", 1036

    Winsock1.SendData "C:\Windows\KeyWin.exe"
End Sub

11-06-2004 20:49
Pokaż profil Kris126  Wyślij email do Kris126        5026200
misiaq87




Typ: neutral
Postów: 8
Zarejestrowany: Jun 2004
Podajesz złą nazwę :P

Jeśli podajesz nazwę komputera w siecii lokalnej to nie używaj przed tym znaków "//". Taki komunikat oznacza błąd połączenia. Pozdrowienia!

11-06-2004 22:59
Pokaż profil misiaq87  Wyślij email do misiaq87        3734618
Kris126




Typ: neutral
Postów: 32
Zarejestrowany: Mar 2004
Winsock znak "\\"

Dzięki za zainteresowanie. Poszedłem w kierunku podpowiedzi i usunołem znaki(\\) poprzedzające nazwę kompa w sieci lokalnej, ale wynik jest taki sam otrzymuję ten sam komunikat błędu (Run-time error 40006).
___________________________________________________

12-06-2004 01:07
Pokaż profil Kris126  Wyślij email do Kris126        5026200
misiaq87




Typ: neutral
Postów: 8
Zarejestrowany: Jun 2004
Pomoc :D

Wiesz ja bym zrobił tak: Sprawdziłbym najpierw czy jestem połączony z serwerem, bo ten komunikat oznacza brak połączenia przy próbie transmisji. W tym celu zrób sobie jakiś tam button, np. Command1, w którm będzie:
winsock.connect "staszek", 666

Potem w zdarzeniu winsock_connect wpisałbym dopiero transmisje danych:
winsock.senddata "czesc"

Czyli kiedy będziesz połączony to tylko wtedy sock wyślę coś do serwera, a jeśli nie to nie wyśle .

Żeby się upewnić czy wszystko gra możesz wprowadzić kod do zdarzeń:

winsock_connect
form1.caption="Połączony"

winsock_close
form1.caption="Zamknięto"

winsock_error
form1.caption="Błąd"

Albo jeszcze spróbuj wsadzić po sock.connect... 'DoEvents', bo możliwe jest to, że wysyła dane zanim się jeszcze połączy.

Jakby coś nie grało to pisz, postaram się sam napisać model tego programu gdyby to nie pomogło. Pozdrawiam!

12-06-2004 09:20
Pokaż profil misiaq87  Wyślij email do misiaq87        3734618
Kris126




Typ: neutral
Postów: 32
Zarejestrowany: Mar 2004
WinSock error 40006

Dzięki za rady, rozwiązałem już problem mam połączenie i jeżeli mam to robie chyba dobrze nie jestem pewny bo sa to moje pierwsze próby z WinSockiem. Wstawiłem tylko jedną linię kodu w Form_Load na serwerze przypisując numer portu na jaki będę się łączył z klienta

'Na serwerze
Private Sub Form_Load()
    Winsock1.LocalPort = 1036
    Winsock1.Listen
End Sub

Wszystko pozostałe bez zmian i jest OK...
Pozdrawiam <Kris> hey!!!
___________________________________________________
Gdy człowiek zechce, to i na gołym szczycie zakwitną kwiaty!

[Post edytowany dnia 12-06-2004 22:10 przez Kris126]

12-06-2004 22:05
Pokaż profil Kris126  Wyślij email do Kris126        5026200
Kris126




Typ: neutral
Postów: 32
Zarejestrowany: Mar 2004
Numer LocalPort

Wydawało mi się że przypisując wybrany numer portu do WinSocka na serwerze
Private Sub Form_Load()
    Winsock1.LocalPort = 1036
    Winsock1.Listen
End Sub
A później się łączyć z kompa zdalnego Winsock1.Connect "Asus", 1036
jest wszystko Ok, bo działa ale może być taka sytuacja że akurat z tego portu kożysta juz Winsock innego programu i wtedy połączę się z nim. Oczywiście w aplikacji na serwerze w procedurze load mógłbym sprawdzać i przypisać np. następny wolny numer. Tylko w jaki sposób mam teraz się połączyć na odpowiedni port z klienta. Jak mam sprawdzić jaki LocalPort jest przypisany do WinSocka mojej aplikacji. Może brnę całkiem w innym kierunku, proszę o podpowiedź....
Pozdrawiam <Kris>
___________________________________________________
Właściwie tylko wtedy jesteśmy żywi, kiedy cieszymy się życzliwością innych.

13-06-2004 17:05
Pokaż profil Kris126  Wyślij email do Kris126        5026200
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1