  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		darkinsanity aka sts
  
  Anmeldungsdatum: 01.11.2006 Beiträge: 456
 
  | 
		
			
				 Verfasst am: 30.10.2007, 18:35    Titel: Datei senden | 
				     | 
			 
			
				
  | 
			 
			
				Hi. ich hab ein Programm geschrieben, das Dateien über Internet und Netzwerk verschicken soll. das ganze ist in QB mit Hilfe der QBTCP-Lib geschrieben. Aber es funktioniert nicht. Es kommt der Fehler: "ERROR! Konnte nicht an [IP] senden!" Kann mir bitte jemand helfen? bin echt ratlos.
 
 	  | Code: | 	 		  
 
DECLARE SUB receivefile ()
 
DECLARE SUB sendfile ()
 
DECLARE SUB readconfigfile ()
 
'$INCLUDE: 'qbtcp.bi'
 
 
 
 
 
DIM SHARED con AS TCPConnection
 
DIM SHARED port AS INTEGER
 
DIM SHARED FinishedSendFile AS STRING
 
FinishedSendFile = "ÛÛ###--GBN-FileSendingFinished--###ÛÛ"
 
port = 1234  'Port auf standard einstellung setzten, falls in der GBN.ini
 
        'kein port= steht
 
DIM SHARED retval AS INTEGER
 
DIM SHARED fileBuffer AS STRING * 1024
 
CONST goingTOsendafile = 17238
 
CONST serverAcceptedTOsendafile = 82341
 
DIM wsd AS WSAData
 
DIM accon AS TCPConnection
 
DIM SHARED clientTCP AS TCPConnection
 
DIM message AS STRING
 
 
 
 
 
CLS
 
PRINT "Konfigurationsdatei wird ausgelesen..."
 
readconfigfile
 
PRINT "Initialisiere WSA..."
 
 
' Initialisierung von Winsock
 
 
retval = WSAStartup(MAKEWORD(1, 1), wsd)
 
IF retval <> 0 THEN
 
PRINT "ERROR: WSA konnte nicht initialisiert werden!"
 
SLEEP
 
END
 
END IF
 
 
'start! = TIMER
 
'DO
 
'LOOP UNTIL TIMER >= start! + 2
 
'sendfile
 
PRINT "Server-Modus wird gestartet..."
 
IF newTCPConnection(con, "", 0, port) = 0 THEN
 
PRINT "Error: Konnte den Server-Modus nicht starten."
 
SLEEP
 
retval = WSACleanup
 
END
 
END IF
 
' Jetzt ist GBN im Server-Modus. Das heiát dass es wartet,
 
' bis ein anderes GBN sich einw„hlt und eine Datei sendet.
 
 
PRINT "GBN wurde erfolgreich gestartet!"
 
start! = TIMER
 
DO
 
LOOP UNTIL TIMER >= start! + 2
 
PRINT "GBN - Hauptmen"
 
PRINT "Drcken sie >s< um eine Datei zu senden."
 
DO
 
   k$ = INKEY$
 
   IF k$ = CHR$(27) THEN GOTO exitProg
 
   IF UCASE$(k$) = "S" THEN sendfile
 
   retval = listenTCPConnection(con, 0, 0, accon)
 
   IF retval = 1 THEN clientTCP = accon
 
   msglen = receiveTCPConnection(clientTCP, message, 0, 0)
 
   IF msglen = -1 OR msglen = -2 THEN
 
   delTCPConnection clientTCP
 
   ELSE 'wir haben Post von einem Client - juhu!
 
   IF message = STR$(goingTOsendafile) THEN receivefile
 
   END IF
 
 
 
 
 
LOOP
 
 
 
 
 
exitProg:
 
delTCPConnection con
 
retval = WSACleanup
 
END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
endofprog:
 
PRINT "WSA wird beendet..."
 
retval = WSACleanup
 
start! = TIMER
 
DO
 
LOOP UNTIL TIMER >= start! + 2
 
 
SUB readconfigfile
 
OPEN "GBN.ini" FOR INPUT AS #1
 
DO
 
INPUT #1, zeile$
 
IF UCASE$(LEFT$(zeile$, 5)) = "PORT=" THEN
 
port = VAL(MID$(zeile$, 6))
 
END IF
 
LOOP UNTIL EOF(1)
 
END SUB
 
 
SUB receivefile
 
DIM message AS STRING
 
PRINT "Ein PC sendet gerade eine Datei an sie..."
 
OPEN "file.tmp" FOR BINARY AS #1
 
retval = sendTCPConnection(clientTCP, STR$(serverAcceptedTOsendafile), LEN(STR$(serverAcceptedTOsendafile)))
 
DO
 
retval = receiveTCPConnection(clientTCP, message, 0, 0)
 
IF retval > 0 THEN ' Der Client sendet ein Stck der Datei
 
IF message = FinishedSendFile THEN EXIT DO
 
fileBuffer = SPACE$(1024)
 
fileBuffer = message
 
PUT #1, , fileBuffer$
 
END IF
 
LOOP
 
CLOSE #1
 
PRINT "Datei vollst„ndig empfangen!"
 
PRINT "Wie m”chten sie die empfangene Datei nennen?"
 
INPUT "", filename$
 
NAME "file.tmp" AS filename$
 
END SUB
 
 
SUB sendfile
 
DIM message AS STRING
 
DIM smessage AS STRING
 
DIM sendtoPC AS TCPConnection
 
' zum Datei senden
 
INPUT "Datei: ", file$
 
INPUT "Empf„nger-IP: ", sendtoip$
 
PRINT "Port"; port
 
PRINT "Gehe in den Client-Modus..."
 
delTCPConnection con
 
PRINT "Stelle Verbindung her..."
 
retval = newTCPConnection(sendtoPC, sendtoip$, port, 0)
 
IF retval = 0 THEN
 
PRINT "ERROR: Konnte keine Verbindung zu "; sendtoip$; "herstellen!"
 
PRINT "       Port:"; port
 
SLEEP
 
retval = WSACleanup
 
END
 
END IF
 
 
message = STR$(goingTOsendafile)
 
retval = sendTCPConnection(sendtoPC, message, LEN(message))
 
IF retval = 0 THEN
 
PRINT "ERROR: Konnte nicht an "; sendtoip$; " senden!"
 
delTCPConnection con
 
retval = WSACleanup
 
SLEEP
 
END
 
END IF
 
 
PRINT "Warten auf Antwort des Servers..."
 
PRINT "Abbrechen mit ESC."
 
 
 
' Der Server muss diese Konstante antworten: ServerAcceptedTOsendafile
 
DO
 
   IF INKEY$ = CHR$(27) THEN GOTO endofsendfile
 
   retval = receiveTCPConnection(sendtoPC, smessage, 0, 0)
 
   IF retval > 0 THEN 'wir haben Post vom Server
 
      IF smessage = STR$(serverAcceptedTOsendafile) THEN
 
         PRINT "Server hat Dateisendung akzeptiert."
 
         PRINT "Datei wird gesendet..."
 
         EXIT DO
 
      END IF
 
   END IF
 
LOOP
 
 
OPEN file$ FOR BINARY AS #1
 
DO
 
   fileBuffer = SPACE$(1024)
 
   GET #1, , fileBuffer
 
   retval = sendTCPConnection(sendtoPC, fileBuffer, LEN(fileBuffer))
 
LOOP UNTIL EOF(1)
 
CLOSE #1
 
retval = sendTCPConnection(sendtoPC, FinishedSendFile, LEN(FinishedFileSend))
 
PRINT "Datei wurde gesendet!"
 
endofsendfile:
 
PRINT "GBN kehrt zurck in den Server-Modus..."
 
 
delTCPConnection sendtoPC
 
IF newTCPConnection(con, "", 0, port) = 0 THEN
 
   PRINT "Error: Konnte den Server-Modus nicht starten."
 
   SLEEP
 
   retval = WSACleanup
 
   END
 
END IF
 
 
END SUB
 
 
SUB sendtext
 
 
END SUB
 
 
 | 	  
 
 
Bitte helft mir! Danke im voraus. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		croco97
 
  
  Anmeldungsdatum: 04.11.2005 Beiträge: 260
 
  | 
		
			
				 Verfasst am: 31.10.2007, 09:16    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Viel kann ich jetzt nicht dazu sagen. Aber:
 
 
1.) Wäre praktisch, Deine GBN.ini zu posten. 
 
2.) An welche IP hast du denn gesendet? Und auf welchem Port? Und was lauscht beim Server auf diesen Port? Ist am Server eine Firewall aktiv? Kannst du den Server pingen?
 
 
Viele Grüsse!
 
 
Croco | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		darkinsanity aka sts
  
  Anmeldungsdatum: 01.11.2006 Beiträge: 456
 
  | 
		
			
				 Verfasst am: 31.10.2007, 12:51    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				GBN.INI
 
 
 
an verschieden IP´s. Einmal an nen Freund, für den ich das Programm mache und einmal an einen anderen PC der über Netzwerk mit meinem verbunden war.
 
Port war immer 1234
 
Die Firewall von Windows blockt erst die NTVDM.EXE aber ich sag "nicht mehr blocken"
 
Den anderen Rechner konnte ich pingen. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		croco97
 
  
  Anmeldungsdatum: 04.11.2005 Beiträge: 260
 
  | 
		
			
				 Verfasst am: 31.10.2007, 13:28    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hmmmh, "IP von Freund irgendwo" kannste wahrscheinlich erstmal vergessen. Da sind viel zu viele Fallen unterwegs. Testrechner im eigenen Netz ist schon besser. 
 
 
Wichtig: Auf jeden Fall für den Test auf beiden Rechner Firewalls komplett deaktivieren, damit diese Fehlerquelle mit Sicherheit ausgeschlossen ist.
 
 
Dann ist immer noch nicht klar, welches Programm auf der anderen Seite auf Port 1234 lauscht. Auf dem Testpartner mal auf cmd
 
 
netstat -na 
 
 
eingeben und schauen, ob auf Port 1234 das vorgesehene Programm hört.
 
 
Erst wenn das der Fall ist, würde ich das Debuggen am Sende-Rechner starten.
 
 
Grüsse!
 
 
Croco | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		darkinsanity aka sts
  
  Anmeldungsdatum: 01.11.2006 Beiträge: 456
 
  | 
		
			
				 Verfasst am: 06.11.2007, 18:13    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Firewall hat ME keine
 
Ist es möglich, dass speziel der Port 1234 von Windows o.Ä. reserviert ist? (Skype zum Beispiel hat einen reservierten Port) | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Mao
 
 
  Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
  | 
		
			
				 Verfasst am: 06.11.2007, 18:22    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Nimm halt testweise mal einen anderen Port.   _________________ Eine handvoll Glück reicht nie für zwei.
 
--
 
  | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		darkinsanity aka sts
  
  Anmeldungsdatum: 01.11.2006 Beiträge: 456
 
  | 
		
			
				 Verfasst am: 08.11.2007, 12:16    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				auch mit anderen Ports und deaktivierter Firewall bei XP gehts nicht.
 
 	  | netstat -na hat Folgendes geschrieben: | 	 		  
 
U:\>netstat -na
 
 
Aktive Verbindungen
 
 
  Proto  Lokale Adresse         Remoteadresse          Status
 
  TCP    0.0.0.0:65             0.0.0.0:0              ABHÖREN
 
 | 	 
  | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Bimi
 
 
  Anmeldungsdatum: 03.12.2007 Beiträge: 66
 
  | 
		
			
				 Verfasst am: 06.12.2007, 17:59    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | sts hat Folgendes geschrieben: | 	 		  GBN.INI
 
 
 
an verschieden IP´s. Einmal an nen Freund, für den ich das Programm mache und einmal an einen anderen PC der über Netzwerk mit meinem verbunden war.
 
Port war immer 1234
 
Die Firewall von Windows blockt erst die NTVDM.EXE aber ich sag "nicht mehr blocken"
 
Den anderen Rechner konnte ich pingen. | 	  
 
 
Geht es auf localhost?
 
 
Wenn das schon nicht funktioniert, brauchst du den Freund erstmal gar nicht zu bemühren.... | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
  | 
   
 
     |