kjmarket Posted July 9, 2006 Posted July 9, 2006 (edited) Ok, so I'm working on a little prog that uses a tcp connection between two pc's, based on the script by AutoIt Smith, that doesnt require a server/client script/prog running. I want to be able to pop open a chat window between me and the person connected to me, or vice versa. How do you accomplish this? Spyrorocks showed me some code to pop open an unclosable window, but how do you open it for both users and allow them to chat? Also..I pop open a separate window for the chat window, how can I only close the child chat window instead of the entire prog? Edited July 9, 2006 by kjmarket Pink Floyd - The Wall
Moderators SmOke_N Posted July 9, 2006 Moderators Posted July 9, 2006 You could download this one of erifash's and see how he's done it, that would be a good start http://www.autoitscript.com/forum/index.php?showtopic=28730 Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
kjmarket Posted July 9, 2006 Author Posted July 9, 2006 OK, thats not the same as what I wanted...but it interests me. With that example, would it be possible to send a tcpsend command to just one person in the chat, rather than to the server? Pink Floyd - The Wall
themax90 Posted July 9, 2006 Posted July 9, 2006 (edited) Please check my projects. My Signature contains alot of information, also my AutoIt ITS project as solved this solution.This also contains many useful TCP things, This is the old File-Based ITShttp://www.autoit-its.com/autoit-its/downl.../File-Based.zipPlease search the Beta Server 0.8.1 for the ~pm function. Edited July 9, 2006 by AutoIt Smith
kjmarket Posted July 9, 2006 Author Posted July 9, 2006 I've looked at that many, many times...and the answer isnt in there. Pink Floyd - The Wall
themax90 Posted July 9, 2006 Posted July 9, 2006 (edited) This is a limited string from the Current server: Case $String[1] = "~pm" Select Case $String[0] <> 3 TCPSend($ConnectedSocket[$SocketNumber], "Invalid Syntax") Return 1 EndSelect $Track = 0 For $Track = 0 To (UBound($Userlist) - 1) Step 1 If $Userlist[$Track] = $String[2] Then $StoredVar = $Track Next TCPSend($ConnectedSocket[$SocketNumber], "Personal Message To " & $Userlist[$StoredVar] & " : " & $String[3]) TCPSend($ConnectedSocket[$StoredVar], "Personal Message From " & $Userlist[$SocketNumber] & " : " & $String[3]) You may modify it to work with you server. This works and is tested. Split the string to allow the message ~pm-username(or socket)-message $Var = StringSplit($String, "-") $Var[1] = ~pm $Var[2] = username/Socket $Var[3] = Message This is from 0.8.1 file based. ; Server Stream Functions: ; ~bye ; ~login-USER-PASS-UID ; ~pm-USER-STRING ; ~register-USER-PASS ;.....ex cetera Case $Text[1] = "~pm" SendMessage("Pm From " & GetUser($SocketNumber) & ">" & $Text[3], GetUserCurrentSocket($Text[2])) SendMessage("Pm To " & GetUser(GetUserCurrentSocket($Text[2])) & ">" & $Text[3], $SocketNumber) FileWriteLine($LogFile, "Pm From " & GetUser($SocketNumber) & " To " & GetUser(GetUserCurrentSocket($Text[2])) & " >" & $Text[3]) Yet another Example, incase you cannot figure it out. ~pm-socketnumber-message CODEGlobal Const $Port = 50911 Global $MaxConc = 100 Global $MainSocket = TCPStartServer($Port, $MaxConc) If @Error <> 0 Then Exit MsgBox(16, "Error", "Server unable to initialize.") Global Const $MaxLength = 512 Global $ConnectedSocket[$MaxConc] Global $CurrentSocket = 0 Local $Track = 0 Global Const $MaxConnection = ($MaxConc - 1) For $Track = 0 To $MaxConnection Step 1 $ConnectedSocket[$Track] = -1 Next While 1 $ConnectedSocket[$CurrentSocket] = TCPAccept($MainSocket) If $ConnectedSocket[$CurrentSocket] <> -1 Then $CurrentSocket = SocketSearch() EndIf $Track = 0 For $Track = 0 To $MaxConnection Step 1 If $ConnectedSocket[$Track] <> - 1 Then $Data = TCPRecv($ConnectedSocket[$Track], $MaxLength) $Data2 = StringSplit($Data, "-") If $Data = "~bye" Then TCPCloseSocket($ConnectedSocket[$Track]) $ConnectedSocket[$Track] = -1 $CurrentSocket = SocketSearch() ElseIf $Data2[1] = "~pm" Then TCPSend($ConnectedSocket[$Data2[2]], "From Socket #" & $Track & " > " & $Data2[3]) TCPSend($ConnectedSocket[$Track], "To Socket #" & $Data2[2] & " > " & $Data2[3]) ElseIf $Data <> "" Then TCPSendMessageAll($MaxConnection, $Data) EndIf EndIf Next WEnd Func TCPSendMessageAll($ConnectionLimit, $Data) Local $Track = 0 For $Track = 0 To $ConnectionLimit Step 1 If $ConnectedSocket[$Track] <> - 1 Then TCPSend($ConnectedSocket[$Track], $Data) Next EndFunc ;==>TCPSendMessageAll Func TCPStartServer($Port, $MaxConnect = 1) Local $Socket $Socket = TCPStartup() Select Case $Socket = 0 SetError(@Error) Return -1 EndSelect $Socket = TCPListen(@IpAddress1, $Port, $MaxConnect) Select Case $Socket = -1 SetError(@Error) Return 0 EndSelect SetError(0) Return $Socket EndFunc Func SocketSearch() Local $Track = 0 For $Track = 0 To $MaxConnection Step 1 If $ConnectedSocket[$Track] = -1 Then Return $Track Else ; Socket In Use EndIf Next EndFunc ;==>SocketSearch Showing This For $Track = 0 To $MaxConnection Step 1 If $ConnectedSocket[$Track] <> - 1 Then $Data = TCPRecv($ConnectedSocket[$Track], $MaxLength) $Data2 = StringSplit($Data, "-") If $Data = "~bye" Then TCPCloseSocket($ConnectedSocket[$Track]) $ConnectedSocket[$Track] = -1 $CurrentSocket = SocketSearch() ElseIf $Data2[1] = "~pm" Then TCPSend($ConnectedSocket[$Data2[2]], "From Socket #" & $Track & " > " & $Data2[3]) TCPSend($ConnectedSocket[$Track], "To Socket #" & $Data2[2] & " > " & $Data2[3]) ElseIf $Data <> "" Then TCPSendMessageAll($MaxConnection, $Data) EndIf EndIf Next Edited July 9, 2006 by AutoIt Smith
themax90 Posted July 9, 2006 Posted July 9, 2006 Incase you doubted the answer was there, there is the answer 3 times over in 2 server versions and another rebuilt generic version.
kjmarket Posted July 9, 2006 Author Posted July 9, 2006 I didn't mean to imply anything, so hopeully you didnt take it as me saying it didnt work or what not. It's just my AutoIT ignorance showing. I'm learning as I go, and think I have my answer. I appreciate the help, man. Thanks. Pink Floyd - The Wall
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now