Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Utilizzo di Winsock al fine di inviare comandi e pingare una porta
Forum - Visual Basic 6 - Utilizzo di Winsock al fine di inviare comandi e pingare una porta

Avatar
franco2 (Normal User)
Newbie


Messaggi: 14
Iscritto: 20/01/2009

Segnala al moderatore
Postato alle 17:10
Lunedì, 09/02/2009
Vorrei sapere, utilizzando il comando winsock, come sia possibile inviare dei comandi, francamente non sono ben riuscito neanche a connettermi. Per facilitare la faccenda, vi spiego la situazione:
trovandomi ad utilizzare un server di un mod di quake3, vorrei un programma capace di chiamare una votazione sul server in questione; quando sono connesso utilizzo ciò:

\ (apro la consolle)
e digito il comando \callvote reload
e parte una votazione

ho provato col senddata e dicendogli d'inviare callvote reload (questo dopo aver impostato indirizzo del winsock1 ed averlo fatto .connect), ma mi dice di aver errato il protocollo


Per quanto riguarda il ping, ho optato per

Codice sorgente - presumibilmente Visual Basic 6

  1. Private Sub Form_Load()
  2.     Winsock1.RemoteHost = "quicihomessol'ip"
  3.     Winsock1.RemotePort = "equilaporta"
  4. End Sub



con un click di un commandbutton, gli ho dato winsock1.connect... e poi? che fare? :D il problema di dover usare winsock per pingare, è che usando invece una sfilza di codice incredibile (un estratto è:)

Codice sorgente - presumibilmente C#

  1. Private Const ICMP_SUCCESS As Long = 0
  2. Private Const ICMP_STATUS_BUFFER_TO_SMALL = 11001                   'Buffer Too Small
  3. Private Const ICMP_STATUS_DESTINATION_NET_UNREACH = 11002           'Destination Net Unreachable
  4. Private Const ICMP_STATUS_DESTINATION_HOST_UNREACH = 11003          'Destination Host Unreachable
  5. Private Const ICMP_STATUS_DESTINATION_PROTOCOL_UNREACH = 11004      'Destination Protocol Unreachable
  6. Private Const ICMP_STATUS_DESTINATION_PORT_UNREACH = 11005          'Destination Port Unreachable
  7. Private Const ICMP_STATUS_NO_RESOURCE = 11006                       'No Resources
  8. Private Const ICMP_STATUS_BAD_OPTION = 11007                        'Bad Option
  9. Private Const ICMP_STATUS_HARDWARE_ERROR = 11008                    'Hardware Error
  10. Private Const ICMP_STATUS_LARGE_PACKET = 11009                      'Packet Too Big
  11. Private Const ICMP_STATUS_REQUEST_TIMED_OUT = 11010                 'Request Timed Out
  12. Private Const ICMP_STATUS_BAD_REQUEST = 11011                       'Bad Request
  13. Private Const ICMP_STATUS_BAD_ROUTE = 11012                         'Bad Route
  14. Private Const ICMP_STATUS_TTL_EXPIRED_TRANSIT = 11013               'TimeToLive Expired Transit
  15. Private Const ICMP_STATUS_TTL_EXPIRED_REASSEMBLY = 11014            'TimeToLive Expired Reassembly
  16. Private Const ICMP_STATUS_PARAMETER = 11015                         'Parameter Problem
  17. Private Const ICMP_STATUS_SOURCE_QUENCH = 11016                     'Source Quench
  18. Private Const ICMP_STATUS_OPTION_TOO_BIG = 11017                    'Option Too Big
  19. Private Const ICMP_STATUS_BAD_DESTINATION = 11018                   'Bad Destination
  20. Private Const ICMP_STATUS_NEGOTIATING_IPSEC = 11032                 'Negotiating IPSEC
  21. Private Const ICMP_STATUS_GENERAL_FAILURE = 11050                   'General Failure
  22.  
  23. Public Const WINSOCK_ERROR = "Windows Sockets not responding correctly."
  24. Public Const INADDR_NONE As Long = &HFFFFFFFF
  25. Public Const WSA_SUCCESS = 0
  26. Public Const WS_VERSION_REQD As Long = &H101



molti ce l'avranno presente; il problema di questo codicillo parziale è che su alcune porte non mi permetta di pingare, ed io allora non so se un server che riceve su una determinata porta sia attivo o meno, perciò ora mi debbo convertire a winsock...

qualora non fossi stato chiaro ditemi pure :D

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 18:01
Lunedì, 09/02/2009
prima è meglio che ti studi come funziona il winsock piuttosto che provare ad utilizzarlo "alla cieca"...
cmq la sintassi per la connessione è

winsock1.connect "ip", porta

es:

winsock1.connect "83.12.xx.xx", 76

PM Quote
Avatar
fa1212 (Normal User)
Pro


Messaggi: 101
Iscritto: 09/10/2008

Segnala al moderatore
Postato alle 18:08
Lunedì, 09/02/2009
scusa ma non puoi semplicemente scrivere un file in .BAT che esegua il ping, la connessione e poi dia quel comando??

Esempio:
@ECHO OFF  
ping [ip che vuoi] > file.txt
telnet
POI EFETTUI LA CONNESSIONE E DAI QUEL COMANDO

Non mi spingo oltre perchè la sezione non è appropriata

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 18:10
Lunedì, 09/02/2009
Testo quotato

Postato originariamente da fa1212:

scusa ma non puoi semplicemente scrivere un file in .BAT che esegua il ping, la connessione e poi dia quel comando??

Esempio:
@ECHO OFF  
ping [ip che vuoi] > file.txt
telnet
POI EFETTUI LA CONNESSIONE E DAI QUEL COMANDO

Non mi spingo oltre perchè la sezione non è appropriata



In questo modo non pinga la porta "scelta" e quindi magari l'ip risponde ma la porta 2378 magari è chiusa ed era proprio quella interessata...(è un'ipotesi non ne sono certo)

PM Quote
Avatar
franco2 (Normal User)
Newbie


Messaggi: 14
Iscritto: 20/01/2009

Segnala al moderatore
Postato alle 22:10
Lunedì, 09/02/2009
grazie, eseguo qualche prova :D
ragazzi, come ben immaginate (dato che l'ho sottolineato in tutti gli altri post) prima di venire a domandare a voi, e quindi a scipparvi tempo -io in effetti rubo tempo vostro e me lo prendo-, frugo tutto il frugabile, giungendo addirittura a utilizzare codice a caso pur di non disturbarvi, e capite bene che non lo faccia per spasso di inventarmi frasi in inglese maccheronico sperando che visual basic le comprenda. Questo perchè mi è sembrato che la mia richiesta sia stata interpretata come un 'non avevo voglia di cercare'

COMUNQUE PROVO E VI DICO :k:

PM Quote