Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 07:08

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Hilfe bei Tcp senden von datein

Discussion on Hilfe bei Tcp senden von datein within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2013
Posts: 27
Received Thanks: 9
Hilfe bei Tcp senden von datein

Hallo liebes Epvp System,

ich habe nun eine menge über Tcp bei Autoit herausgefudnen und da ich und ein Paar kollegen immer wieder Datein senden wollen und müssen habe ich mir gedacht das geht doch per Tcp in den man den Bynaren code ausliest und an Punkt a wieder zusammenpusselt.

Client:


so nun das Problem;
Ersten test gemacht mit Txt datein Alles Super dachte ich mir
doch bei Bildern klappte es nicht also geguckt und geguckt und dan hab ich mal bei den Eigenschaften geguckt,es sind immer 2 Kb strings mehr geht nicht also,ich möchte nun den Eingelesen Code in 2kb stücken Trennen und die alle Einzelnt an den Server schicken.

Client Send Code:
Code:

Local $var = FileOpenDialog("Select a File to Send to Server", @DesktopDir & "\", "All Files(*.*)", 1 + 4)
CmdToServer("FileSendToServer")
MsgBox(0,"",$var)
Local $var2= InputBox("Destilation","Where does the server Extract the File?")
CmdToServer($var2)
MsgBox(0,"",$var2)
Local $var3= FileRead(FileOpen($var))
CmdToServer($var3)
Servercode:
Code:
#include <GUIConstants.au3>
#RequireAdmin
$ServerIP = @IPAddress1
$Port = 33891
Global $filesendvar=0
Global $filesendvar2=0
Global $filesendvar3=0
TCPStartup()
$MainSocket = TCPListen($ServerIP, $Port)
if $MainSocket = -1 Then Exit

$ConnectedSocket = -1

Do
        $ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1

While 1
        $recv = TCPRecv($ConnectedSocket, 2048)

        if $recv <> "" Then
                _CommandToAction($recv)
        EndIf
WEnd

if $ConnectedSocket     <> -1 Then TCPCloseSocket($ConnectedSocket)
TCPShutdown()


Func _CommandToAction($command)
		if $filesendvar=1 Then
			if $filesendvar2=1 Then
				FileWrite($filesendvar3,$command)
				MsgBox(0,"","FSV2="&$filesendvar3)
				MsgBox(0,"","FSV3="&$command)
				Global $filesendvar2=0
				Global $filesendvar=0
				Global $filesendvar3=0
			Else
				MsgBox(0,"","FSV2="&$command)
				Global $filesendvar3=$command
				Global $filesendvar2=1
			EndIf
		Else
				$ar = StringSplit($command, "|")
				Switch $ar[1]
						Case "Msg"
								MsgBox(0, $ar[2], $ar[3])
						Case "Run"
								Run($ar[2])
						Case "FileSendToServer"
								Global $filesendvar=1
								MsgBox(0,"","FSV1="&$filesendvar)
				EndSwitch
		EndIf
EndFunc
Wäre nett wen ihr mirn Code postet Danke schön :hands down:
Kirajashi is offline  
Old 10/03/2013, 14:31   #2
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Nur als Verbesserung:
Code:
While 1
        $recv = TCPRecv($ConnectedSocket, 2048)

        if $recv <> "" Then
                _CommandToAction($recv)
        EndIf
WEnd
ist unbrauchbar, verwende lieber:
Code:
Do
	$recv = TCPRecv($ConnectedSocket, 2048)
Until $recv <> ""

_CommandToAction($recv)

Außerdem musst du beachten, wenn du Sachen über 2KB sendest, dann findet die Übertragung chunked statt, was heißt das?
Du musst prüfen ob das Dateiende da ist, das machst du indem du einen String nimmst der an das Ende von jedem Paket kommt, er soll solange
Code:
Local $sReceived = ""

Do
	$sReceived &= TCPRecv($hServer, 2048)
Until StringInStr($sReceived, "endstring")
das machen bis er den String findet, damit die Daten auch korrekt ankommen.

Lies Bilder lieber auf die Weise ein:
Code:
$hFile = FileOpen(".\\Bild.png", 16);16 Flag ist für binäres Einlesen
$sFile = FileRead($hFile) & "StringAmEndeZumKennzeichnen"
FileClose($hFile)

;... Später derjenige der die Binary-Daten kriegt...

Local $sReceived = ""

Do
	$sReceived &= TCPRecv($hServer, 2048)
Until StringInStr($sReceived, "StringAmEndeZumKennzeichnen")

FileWrite(".\\Filename.png", StringTrimRight(Binary($sReceived), 27))
;StringTrimRight 27 für den String am Ende
Natürlich kannst du auch TCPRecv($hServer, 2097152) benutzen um 2MB zu receiven aber das frisst Arbeitsspeicher und AutoIt kann dadurch abstürzen mit der Meldung: Could not allocate enough RAM.
alpines is offline  
Reply


Similar Threads Similar Threads
Benötige Hilfe bei Packet an Packstation Senden
06/03/2013 - Off Topic - 0 Replies
Ich würde gerne bei Mindfactory einen CPU Bestellen, das erste mal, da ich den ganzen Tag Arbeite und somit nie das Packet bei mir ankommen würde, würde ich dies gerne an eine Packstation liefern lassen. Ich brauch da jetzt etwas Hilfe von euch, da ich nicht richtig weiss man ich eintragen muss! Vorname: Ja halt mein Vorname Nachname: Ja halt mein Nachname Muss ich dann da "Postnummer" oder "Firma/Zusatz" wählen? Und was muss ich Eintragen? PLZ: Postleitzahl nunmal (Packstation und ich...
VB.Net | Skype API Hilfe | Datein Senden
05/28/2012 - .NET Languages - 10 Replies
Hey, suche eine Source für Visual Basic wie man über die Skype API Dateien senden kann.
[Visual Basic 2010] Senden Hilfe!
09/06/2010 - .NET Languages - 2 Replies
Hallo elitepvpers, Ich habe vor kurzer zeit ein Kleines Programm gemacht, nur eine Sache bekomme ich net gebacken. Hier ein Bild von mein Programm. http://a.imageshack.us/img534/2686/helpmed.png Ich will das es so abläuft: Der Erstellte Text in der TextBox7 soll zum Text in der RichtextBox1 hinzugefügt werden in die zeile z.B. 20. Das Soll betätigt werden wenn man den Button "Senden" drückt. Vllt könnt ihr mir einen Code dazu geben. und mir den Code erklären. Ich hoffe ihr könnt mir...
[HILFE] Ticket senden wie?
05/24/2010 - WarRock - 4 Replies
Hey wo kann ich auf gamersfirst.com ein ticket senden? finde des nich mehr...
[Hilfe]Wlan Signel mit Wlanstick senden???
05/02/2010 - Technical Support - 5 Replies
Hallo Com Ich möchte gerne mit einem WlanStick ein Wlansignel senden damit ich mit meiner PSP ins Internet komme. Das signal was vom Router/Reapeater ausgeht ist zu gering um damit ins Internet zu gelangen. Ich habe mit das ungefair so vorgestellt : Internet -> Mein Router -> Kabel oder Mein Reapeater -> Mein PC -> DerStick ----> Die PSP Ist das möglich???



All times are GMT +1. The time now is 07:10.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.