Bitte um Hilfe
Wie könnte mann so etwas realisieren:
Habe einen einfachen Zähler erstellt, wenn ein Knopf gedrückt wird (i = i +1)
wird die jeweillige zahl um 1 erhöht und in eine textdatei (auf dem server) geschrieben.
So weit so gut.
Nun möchte ich das die letzte Zahl aus dieser Datei (im diesem Falle die 3):
1
2
3
auf 3 verschiedenen Rechnern anzeigen.
Da kein gleichzeitiger Zugrif auf die txt. datei möglich ist, habe ich an
AdlibEnable (zB 5 sec Zugriff) gedacht.
Auserdem sollte man jederzeit in der Lage sein die Zahl zu erhohen.
Dankehttp: //autoit.aufwaerts.de/images/smilies/irre.gif
Irre
Zähler
-
- [ offen ]
-
david_68 -
8. April 2007 um 17:54 -
Geschlossen -
Erledigt
-
-
Das ist ein altes Problem von Datenbanken im allgemeinen. ( Stichwort: ACID Transktionen).
Warum sollten aber nicht mehrere auf eine Datei zugreifen können. (FileClose nach jedem Zugriff) Aber das Prinzipielle Problem bleibt, dass konkurrierende Schreibzugriffe zu unberechenbaren ergebnissen führen können.
-
du kannst zb über FTP das machen, gibts schöne befehle
siehe hilfe
-
- Offizieller Beitrag
Hallo!
mach es doch mit TCP/IP... ist schneller und verbrauch kein speicherplatz...
ich mach dir mal ein skript (kommt gleich mit edit...)
Mfg Spider
Edit: So.. hab dir nun ein Skript gemacht:
Server:. (MaxPend kannst du belibig verändern, aber bei einer zahl > 50 könnte es zu problemen kommen...)
Spoiler anzeigen
[autoit];SERVER
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
[/autoit] [autoit][/autoit] [autoit]Global Const $PORT = 1223
[/autoit] [autoit][/autoit] [autoit]Global $maxpend = 10;wieviele leute gleichzeitig connecten können
[/autoit] [autoit][/autoit] [autoit]
Global $verbindungen[$maxpend+1]$Listen = TCPListen(@IPAddress1,$PORT,$maxpend)
[/autoit] [autoit][/autoit] [autoit]AdlibEnable("_Waitforinc",100)
[/autoit] [autoit][/autoit] [autoit]For $zaehler = 1 To 1000
[/autoit] [autoit][/autoit] [autoit]
_SendToAllSock($zaehler)
Sleep(1000)
Next
[/autoit] [autoit][/autoit] [autoit]
Func _Waitforinc()
$acc = TCPAccept($Listen)
If $acc = -1 Then Return
For $i = 1 To $maxpend
If Not $verbindungen[$i] Then
$verbindungen[$i] = $acc
Return
EndIf
Next
TCPSend($acc,"full")
TCPCloseSocket($acc)
EndFuncFunc _SendToAllSock($text)
[/autoit]
For $i = 1 To $maxpend
If $verbindungen[$i] Then TCPSend($verbindungen[$i],$text)
Next
EndFuncClient:
Spoiler anzeigen
[autoit];CLIENT
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
[/autoit] [autoit][/autoit] [autoit]Global Const $PORT = 1223
[/autoit] [autoit][/autoit] [autoit]
Global Const $IP = @IPAddress1 ;@ipadress1 funktioniert nur wenn der client auf dem gleichen rechner wie der server läuft...$con = -1
[/autoit]
$recv = ""
While $con = -1
$con = TCPConnect($IP,$PORT)
WEnd
$spl = SplashTextOn("","Wait for recv...",150,20,-1,-1,16)
While 1
Do
$recv = TCPRecv($con,64)
If @error Then Exit MsgBox(48,"Error","Server is full or Server has exit")
Until $recv <> ""
ControlSetText($spl,"","Static1",$recv)
WEndHoffe konnte helfen
-
Hätte es auch so gemacht über tcp ein server und soviele clients wie du willst...