Sign in to follow this  
Followers 0
Shahriyar

Send TCP Packets to clients

9 posts in this topic

#1 ·  Posted (edited)

Hello

I have an autoit script that i want it to be a TCP Server and send packet to connected clients

I have successfully created TCP Server and clients can connect but the problem is that i sont know how to send packet to clients

There is my autoit code

TCPStartup()

Local $Socket = TCPListen("127.0.0.1",14)
Local $Connection = TCPAccept($Socket)

While True
TCPSend($Socket,Binary(0))
Sleep(1000)
WEnd

Thanks

Edited by Shahriyar

Share this post


Link to post
Share on other sites



Hi,

Welcome to the autoit forum :)

Unfortunately you missed the search forum button.

Br, FireFox.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

Do a search on here for answers to this, it's been talked about as recently as last week.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

More than that, plenty of commented examples.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Now i wrote this code but even this does not works

TCPStartup()

Local $Socket = TCPListen("127.0.0.1",14)
Dim $Client[1024]
Local $MyInt = 0

While True
Local $Connection = TCPAccept($Socket)

If $Connection >= 0 Then

$Client[$MyInt] = $Connection
$MyInt += 1

For $Counter = 1 to $MyInt
TCPSend($Client[$Counter],StringToBinary("Hello !"))
Next

EndIf

Sleep(500)
WEnd
Edited by Shahriyar

Share this post


Link to post
Share on other sites

Your $Counter var should start at ZERO as your $MyInt var does.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites

CHANGE

If $Connection >= 0 Then

to

If $Connection <> -1 Then

http://www.autoitscript.com/autoit3/docs/functions/TCPAccept.htm

Share this post


Link to post
Share on other sites

clien:

$YOURIP = ""
TCPStartup()
DO
  $CONNECT = TCPCONNECT($YOURIP , $PORT)
UNTIL $CONNECT <> -1
DO
$RECVPACK = TCPRECV($CONNECT, 4024)
IF @ERROR THEN
MsgBox(0,"","server shutdown")
TCPShutdown()
endif
UNTIL $RECVPACK <> ""
MsgBox(0,"",$RECVPACK)
TCPShutdown()

Share this post


Link to post
Share on other sites

Ok now i make it work with this and the help of TCP UDF

#include "TCP.au3"
TCPStartup()

Local $Socket = _TCP_Server_Create(14)
Local $Connection = TCPAccept($Socket)
Dim $Client[1025]
Local $ConnectedClients

_TCP_RegisterEvent($Socket, $TCP_NEWCLIENT, "NewClient")
_TCP_RegisterEvent($Socket, $TCP_DISCONNECT, "ClientDisconnects")

Func NewClient($hSocket, $iError)
$Client[FindFreeSocket()] = $hSocket
$ConnectedClients = FindConnectedClients()

For $Counter = 0 to $ConnectedClients
TCPSend($Client[$Counter],StringToBinary("Hello !"))
Next
EndFunc

Func ClientDisconnects($hSocket, $iError)
For $Counter = 0 to 1024
If $Client[$Counter] = $hSocket Then
$Client[$Counter] = -1
EndIf
Next
EndFunc

Func FindFreeSocket()
For $Counter = 0 to 1024
If $Client[$Counter] < 0 Then
Return $Counter
EndIf
Next
EndFunc

Func FindConnectedClients()
For $Counter = 0 to 1024
If $Client[$Counter] < 0 And $Client[$Counter + 1] < 0 And $Client[$Counter + 2] < 0 Then
Return $Counter - 1
EndIf
Next
EndFunc

While True

Sleep(10)

WEnd

But now i think my FindConnectedClients() need some improvements

Does anyone can take a look on it ?

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0