Für meinen selber geschriebenen BNC such ich ne Funktion das der BNC wenn die Verbindung mal abbricht zum IRC server er sich selber neu verbindet.
Das selbe Problem hab ich bei TCPListen das er wenn ich mich einmal verbunden habe mich nicht nochmal verbinden kann ohne das script neu zu starten.
Ich komm gerade nicht weiter wie ich das Problem lösen könnte.^^
[autoit]#include <irc.au3>
$server = IniRead(@ScriptDir & "/BNC.ini", "Login", "Server", "multiplay.uk.quakenet.org")
$channel = IniRead(@ScriptDir & "/BNC.ini", "Login", "Channel", "#testchann")
$nick = IniRead(@ScriptDir & "/BNC.ini", "Login", "Nick", "testnick_123")
$port = IniRead(@ScriptDir & "/BNC.ini", "Login", "Port", "6667")
$master = IniRead(@ScriptDir & "/BNC.ini", "Master", "Master", "hotwert")
$passwort = IniRead(@ScriptDir & "/BNC.ini", "Master", "Passwort", "test")
TCPStartup()
Global $sock = _IRCconnect($server, $port, $nick)
$recv = TCPRecv($sock, 8192)
;If not $recv= "" then MsgBox(0,"",$recv)
$sData = StringSplit($recv, @CRLF)
For $i = 1 To $sData[0] Step 1
$sTemp = StringSplit($sData[$i], " ")
If $sTemp[0] >= 2 Then
If $sTemp[1] = "PING" Then _IRCPing($sock, $sTemp[2])
EndIf
Next
$bncsock = TCPListen("127.0.0.1", 1234)
Do
$ConnectedSocket = TCPAccept($bncsock)
Until $ConnectedSocket <> -1
sleep(1000)
Tcpsend($ConnectedSocket, "PING :123456789" & @CRLF)
TCPSend($ConnectedSocket, ":Hotwert!~[email='Hotwert@mein.host.de'][/email] PRIVMSG test :hallo" & @CRLF)
TCPSend($ConnectedSocket, ":Hotwert.irc.bnc 001 hotwert :Welcome to the Hotwert IRC Network." & @CRLF)
TCPSend($ConnectedSocket, ":Hotwert.irc.bnc NOTICE Hotwert :on 2 ca 1(4) ft 20(20) tr" & @CRLF)
TCPSend($ConnectedSocket, ":Hotwert.irc.bnc 221 hotwert +i" & @CRLF)
TCPSend($ConnectedSocket, ":Hotwert!~[email='Hotwert@mein.host.de'][/email] MODE Hotwert +i" & @CRLF)
sleep(1000)
Tcpsend($ConnectedSocket, ":Hotwert.irc.bnc 311 hotwert hotwert ~hotwert mir.is.langweilig * :lalalala" & @CRLF)
Tcpsend($ConnectedSocket, ":Hotwert.irc.bnc 319 hotwert hotwert :@#channel1 @#channel2 @#hotwert" & @CRLF)
Tcpsend($ConnectedSocket, ":Hotwert.irc.bnc 312 hotwert hotwert *.ficken.org :fick IRCServer" & @CRLF)
Tcpsend($ConnectedSocket, ":Hotwert.irc.bnc 330 hotwert hotwert hotwert :is authed as" & @CRLF)
Tcpsend($ConnectedSocket, ":Hotwert.irc.bnc 318 hotwert hotwert :End of /WHOIS list." & @CRLF)
While 1
$test = TCPRecv($ConnectedSocket,8192)
$recv = TCPRecv($sock, 8192)
;If not $recv= "" then MsgBox(0,"",$recv)
If $ConnectedSocket = @error then
TCPCloseSocket($ConnectedSocket)
$ConnectedSocket = TCPAccept($bncsock)
endif
$sData = StringSplit($recv, @CRLF)
For $i = 1 To $sData[0] Step 1
$sTemp = StringSplit($sData[$i], " ")
If $sTemp[0] >= 2 Then
If $sTemp[1] = "PING" Then _IRCPing($sock, $sTemp[2])
EndIf
Next
If not $recv = "" then Tcpsend($ConnectedSocket, $recv)
If not $test = "" then TCPSend($sock, $test)
;If $test = "test" then TCPSend($ConnectedSocket, "hallo" & @CRLF)
sleep(500)
WEnd
Das Script läuft einwandfrei und macht auch das was es machen soll! Es besteht nur noch das oben beschriebene Problem.