kjmarket Posted July 9, 2006 Share 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 Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted July 9, 2006 Moderators Share 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. Link to comment Share on other sites More sharing options...
kjmarket Posted July 9, 2006 Author Share 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 Link to comment Share on other sites More sharing options...
themax90 Posted July 9, 2006 Share 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 Link to comment Share on other sites More sharing options...
kjmarket Posted July 9, 2006 Author Share Posted July 9, 2006 I've looked at that many, many times...and the answer isnt in there. Pink Floyd - The Wall Link to comment Share on other sites More sharing options...
themax90 Posted July 9, 2006 Share 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 Link to comment Share on other sites More sharing options...
themax90 Posted July 9, 2006 Share 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. Link to comment Share on other sites More sharing options...
kjmarket Posted July 9, 2006 Author Share 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 Link to comment Share on other sites More sharing options...
themax90 Posted July 9, 2006 Share Posted July 9, 2006 No problem. Love to help. Link to comment Share on other sites More sharing options...
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