Du bist nicht angemeldet.

Kontrollzentrum

Spenden

Jeder Euro hilft uns, euch zu helfen.

Adsense

Downloads

Stabil: 3.3.8.1 (Q, H)
Stabil: 3.3.12.0 (Q, H)
Beta: 3.3.11.5 (Q, H)
SciTE: 4/5/2014 (Q, H)
Hilfe Deutsch: 12/23/2013 (Q)
Download: OrganizeIncludes (Q)
Stand: 02.06.2014 - 2:21 Uhr

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »Commander21« ist der Autor dieses Themas

Registrierungsdatum: 11. Februar 2009

  • Private Nachricht senden

1

Freitag, 24. April 2009, 12:17

Was ist hier falsch? ( TCP )

Tach zusamm.

Ich versuch mich grad in sachen TCP, kapier aber i.wie recht wenig. Die Hilfe ist zwar in dem Thema sehr ausführlich, jedoch etwas verwirrend...

Hab mal 2 Scripte gemacht ( Server und Client ).

Der server enthält eine GUI mit 2 Inputboxen.
Eine ist zur eingabe eines Textes die andere zur eingabe der IP, zu der verbunden werden soll.

Der Client soll diesen Text empfangen und ihn in einem ToolTip wiedergeben.

aber i.wie scheiter ich andauernd... ;(

Achja: Kann man die Fehlercodes, die @error zurückgibt i.wo sehn, alsow enn jetz z.B 10049 als
Fehlercode kommt, muss ich ja auch wissen, für was das steht.

Also hier mal die 2 Scripte:

Server:

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Global $IpAddress = @IPAddress1 ;==> Gibt deine IP zurück.
TCPStartup ()
GUICreate ("TCP/IP Server", 200, 165)
GUISetBkColor (0xFFFF00)
GUISetState ()

GUICtrlCreateLabel ("Hier den Text eingeben.", 10, 10, 180)
$Input1 = GUICtrlCreateInput ("", 10, 30, 180)
GUICtrlCreateLabel ("An welche IP soll gesendet werden?", 10, 60, 180)
$Input2 = GUICtrlCreateInput ("", 10, 80, 180)
$Button1 = GUICtrlCreateButton ("Senden", 10, 130, 180)
While 1
 $msg = GUIGetMsg ()
 Switch $msg
 Case -3 
  Exit
 Case $Button1
  _Send ()
 EndSwitch
WEnd
Func _Send ()
 $MainSocket = TCPConnect (GUICtrlRead ($Input2), "9000")
 If $MainSocket <= 0 Then
  MsgBox (16, "Fehler", "Felercode: " & @error)
 Else
  TCPSend ($MainSocket, GUICtrlRead ($Input1))
 EndIf
EndFunc ;==> _Send


Client:

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
TCPStartup ()
$MainSocket = TCPListen (@IPAddress1, 9000)
While 1
 $ConnectSocket = TCPConnect ("192.168.1.3", 9000)
 $Connect = TCPAccept ($MainSocket)
 If $Connect >= 0 Then
  $recv = TCPRecv ($Connect, 2048)
  TrayTip ("Empfangener Text:", $recv, 10)
 EndIf
WEnd


Wäre nett, wenn mir da einer weiterhelfen könnt ^^

MfG


funkey

New Dad

Registrierungsdatum: 20. August 2008

Beruf: Elektrobetriebstechniker / Step7-Programmierer

  • Private Nachricht senden

2

Freitag, 24. April 2009, 12:37

Hab mir deinen Code nicht angesehen, aber hier mal ein paar Fehlercodes

  Spoiler Spoiler

Socketfehler: Diese Liste erhebt keinen Anspruch auf Vollständigkeit
Name Code Bedeutung

WSAEINTR 10004 Aufruf wurde abgebrochen
WSAEBADF 10009
WSAEACCES 10013 Zugriffsfehler
WSAEFAULT 10014 Parameter sind falsch
WSAEINVAL 10022 1. Andere Funktion muß vorher aufgerufen werden
2. Socket ist schon an Adresse gebunden
3. Socket noch nicht an Adresse gebunden bzw. schon verbunden
WSAEMFILE 10024 Resourcen fehlen (Dateien, Warteschlangen)
WSAEWOULDBLOCK 10035 Aufruf würde blockieren
WSAEINPROGRESS 10036 Parallele Aufrufe nicht erlaubt
WSAEALREADY 10037 Abgebrochene Routine trotzdem schon fertig
WSAENOTSOCK 10038 Kein gültiger Socket angegeben
WSAEDESTADDRREQ 10039 Zieladresse benötigt
WSAEMSGSIZE 10040 Datagram zu groß, wurde abgeschnitten
WSAEPROTOTYPE 10041
WSAENOPROTOOPT 10042 Unbekannte Socket-Option
WSAEPROTONOSUPPORT 10043 Protokoll wird nicht unterstützt
WSAESOCKTNOSUPPORT 10044 Sockettyp wird in angegebener Adressfamilie nicht unterstützt
WSAEOPNOTSUPP 10045 Dieser Sockettyp wird nicht unterstützt
WSAEPFNOSUPPORT 10046 Protokollfamilie wird nicht unterstützt
WSAEAFNOSUPPORT 10047 Adressfamilie wird nicht unterstützt
WSAEADDRINUSE 10048 IP-Adresse bzw. Port werden schon/noch benutzt
WSAEADDRNOTAVAIL 10049 Port/Adresse nicht verfügbar
WSAENETDOWN 10050 Netzwerk reagiert nicht
WSAENETUNREACH 10051 Netzwerk kann nicht erreicht werden
WSAENETRESET 10052 Verbindung durch TCP/IP zurückgesetzt
WSAECONNABORTED 10053 Verbindung durch TCP/IP abgebrochen
WSAECONNRESET 10054 Partner hat Verbindung zurückgesetzt
WSAENOBUFS 10055 Resourcen fehlen (Interner Pufferspeicher)
WSAEISCONN 10056 Socket ist schon verbunden
WSAENOTCONN 10057 Socket ist noch nicht verbunden
WSAESHUTDOWN 10058 Andere Seite hat Verbindung einseitig beendet
WSAETOOMANYREFS 10059
WSAETIMEDOUT 10060 Aufruf dauert zu lange, daher Abbruch
WSAECONNREFUSED 10061 Angerufener möchte keinen Verbindungsaufbau
WSAELOOP 10062
WSAENAMETOOLONG 10063
WSAEHOSTDOWN 10064
WSAEHOSTUNREACH 10065 Host nicht erreicbar
WSAENOTEMPTY 10066
WSAEPROCLIM 10067
WSAEUSERS 10068
WSAEDQUOT 10069
WSAESTALE 10070
WSAEREMOTE 10071
WSASYSNOTREADY 10091 Netzwerk nicht zur Kommunikation bereit
WSAVERNOTSUPPORTED 10092 gewünschte Winsock-Version wird nicht unterstützt
WSANOTINITIALISED 10093 Socket.Initialize muß aufgerufen werden
WSAHOST_NOT_FOUND 11001 DNS-Server nicht gefunden
WSATRY_AGAIN 11002 Gesuchter Rechner nicht gefunden
WSANO_RECOVERY 11003 Nicht behebbarer Fehler
WSANO_DATA 11004 Keine Namensdaten vorhanden
WSANO_ADDRESS 11004


Ich hoffe, das sind die richtigen ;)

  • »Commander21« ist der Autor dieses Themas

Registrierungsdatum: 11. Februar 2009

  • Private Nachricht senden

3

Freitag, 24. April 2009, 13:43

schonmal nice, thx. kann ich gut gebrauchen. Wo hasten die eigl. her?


progandy

Bot-Killer

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

4

Freitag, 24. April 2009, 14:10

Englisch: http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx
(TCPStartUp sagt: @error wie WSAStartup auf MSDN. Also bei msdn zu WSAStartup gehen und auf eine der Fehlerkonstanten geklickt ;) )
Deutsch: http://support.microsoft.com/kb/819124/de
(eine der Kosntanten bei google eingegeben und nur Seiten auf deutsch suchen)

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

  • »Commander21« ist der Autor dieses Themas

Registrierungsdatum: 11. Februar 2009

  • Private Nachricht senden

5

Freitag, 24. April 2009, 14:31

Ok, thx.

Weis noch jmd ne Antwort auf meine Frage, warum die Scripte net funzen?

Wäre super ^^


progandy

Bot-Killer

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

6

Freitag, 24. April 2009, 15:37

Hmm, erst mal: der Empfänder ist immer der Server. Der Client baut die Verbindung zu Sever auf, nicht umgekehrt ;)
Dann solltest du die Sockets immer schließen:

Client

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Global $IpAddress = @IPAddress1 ;==> Gibt deine IP zurück.
TCPStartup ()
GUICreate ("TCP/IP Client", 200, 165)
GUISetBkColor (0xFFFF00)
GUISetState ()

GUICtrlCreateLabel ("Hier den Text eingeben.", 10, 10, 180)
$Input1 = GUICtrlCreateInput ("", 10, 30, 180)
GUICtrlCreateLabel ("An welche IP soll gesendet werden?", 10, 60, 180)
$Input2 = GUICtrlCreateInput ($IpAddress, 10, 80, 180)
$Button1 = GUICtrlCreateButton ("Senden", 10, 130, 180)
While 1
 $msg = GUIGetMsg ()
 Switch $msg
 Case -3 
  Exit
 Case $Button1
  _Send ()
 EndSwitch
WEnd
Func _Send ()
 $MainSocket = TCPConnect (GUICtrlRead ($Input2), 9000)
 If $MainSocket <= 0 Then
  MsgBox (16, "Fehler", "Felercode: " & @error)
 Else
  TCPSend ($MainSocket, GUICtrlRead ($Input1))
  TCPCloseSocket($MainSocket)
 EndIf
EndFunc ;==> _Send

Server

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
TCPStartup ()
$MainSocket = TCPListen (@IPAddress1, 9000)
While 1
;~  $ConnectSocket = TCPConnect ("192.168.1.3", 9000)
 $Connect = TCPAccept ($MainSocket)
 If $Connect >= 0 Then
    Do 
        $recv = TCPRecv ($Connect, 2048)
    Until $recv Or @error
    TrayTip ("Empfangener Text:", $recv, 10)
    TCPCloseSocket($Connect)
 EndIf
WEnd

Und der server muss warten, bis er etwas empfängt. TCPRecv blockiert nicht, bis etwas kommt.

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

  • »Commander21« ist der Autor dieses Themas

Registrierungsdatum: 11. Februar 2009

  • Private Nachricht senden

7

Freitag, 24. April 2009, 18:37

Ahhh, super ^^

Ich dachte bis jetz immer, das es umgedreht ist, wieder was dazu gelernt ^^

Vielen dank dafür. :thumbup:



Mein Ziel ist ein recht großes Projekt, wobei ich bestimmt noch so einige male eure Hilfe in Anspruch nehmen
muss.

Ich will eine Art SuperChat Programm machen. ^^

Also ihr müsst euch da so vorstellen.

Man hat eine Große GUI.
Dort kann man dann einen neuen Server erstellen.
Man kann Servername und Passwort eingeben.

Auf diesen Server sollen dann auch andere Leute drauf gehn können.
Also sowas ähnliches wie TeamSpeak. Nur eben ohne Mikro ^^.

Mal gucken, wie sich das am besten lösen lässt. entweder mach ichs mit TCP oda mit meinem FTP Server.

Ihr könnt auch ruhig schonmal tipps geben, die mir später weiter helfen könnten ^^



MfG

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Commander21« (24. April 2009, 18:49)


autoit.de Webutation