Sign in to follow this  
Followers 0
XBenny

tcprecv

10 posts in this topic

#1 ·  Posted (edited)

hi guys all gem? tou need of some help:

I need to connect to a server over TCP, the tcpsend send data and receive the tcprecv, but need to do it all together, all functions at once, and tcpsend tcprecv, how I do it? thank you

Edited by XBenny

Share this post


Link to post
Share on other sites



After 14 post I would have expected you could do a lot better than that. I'm looking forward to the 16th :D


Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

Share this post


Link to post
Share on other sites

Did you have a look in the help file for TCP...?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Yes, I looked.

I need to send a packet of data to a server, the packet has to send 116 bytes of data, but he is sending twice as many do not know why, I am sending it as a string, I'm doing something wrong, he has to send the form otra ?

Share this post


Link to post
Share on other sites

If you need to send 16 bytes then probably you should be sending binary data, but to get better help you need to show some code.


Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

Share this post


Link to post
Share on other sites

Don' forget to prepend your string with "0x" for binary.


♡♡♡

.

eMyvnE

Share this post


Link to post
Share on other sites

Yes, I looked.

I need to send a packet of data to a server, the packet has to send 116 bytes of data, but he is sending twice as many do not know why, I am sending it as a string, I'm doing something wrong, he has to send the form otra ?

If twice as many bytes as expected are being sent, I would check to see if the sender is sending unicode instead of ascii.

Share this post


Link to post
Share on other sites

What does your code look like? How does the received data look like? TCPRecv has a flag to return binary data.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

aqui está o codigo:

"code"

onde o primeiro packet enviado é para dizer para o servidor que eu estou conectando, e o segundo é o packet de login, para liberar o meu acesso.

o certo seria ele enviar 116 bytes, mas está enviando o dobro que é 232, e no primeiro enviar 4 bytes, mas está enviando 8, onde devo mecher onde está errado? tem que enviar como string mesmo como que eu faço?

obrigado ja pela ajuda de vocês.

------------------------------------------------------------------------

google tradutor:

here's the code:

func tcp()
tcpstartup()
$connect = tcpconnect('189.112.1.166', 8281)
write("open socket id:  " & $connect)
_send('11F3111F')
_send('7400F68807E684FD123CBA132B236B2D3127E4F906FFECFD78666032FB243000D2F130FBF4F194FC72E964FB00F0F0FD22F05CFDBAF16CFD06EDCCFD1EF1F4FDFAFDD4FAFAE8E8FBFAECF0FD0CFC40FA4AF18CFD30F1F4FDFAF1F4FB000EE4FDE7F1F4FD399E53B9C63138232D8BE191F5FB98B2')
$recv = tcprecv($connect, 999999)
write("recv:  " & $recv)
EndFunc
func _send($packet)
$send = tcpsend($connect, $packet)
write("offsets enviados:  " & "(" & $send & ")" & " - " & $packet)
endfunc
func write($write)
consolewrite("[" & _NowTime() & "] - '" & $write & "'" & @CR)
endfunc

where the first packet is sent to tell the server I'm connecting, and the second is the login packet, to release my access.

right he would send 116 bytes, but is sending twice that is 232, and the first 4 bytes to send, but sending is 8, which is where I shake wrong? have to send it as string as I do?

Thank you in advance for your help.

----edit

Don' forget to prepend your string with "0x" for binary.

had not read your post sorry, I think it worked thanks!

Now the code looks like this:

func tcp()
tcpstartup()
$connect = tcpconnect('189.112.1.166', 8281)
write("open socket id: " & $connect)
_send('11F3111F')
_send('7400F68807E684FD123CBA132B236B2D3127E4F906FFECFD78666032FB243000D2F130FBF4F194FC72E964FB00F0F0FD22F05CFDBAF16CFD06EDCCFD1EF1F4FDFAFDD4FAFAE8E8FBFAECF0FD0CFC40FA4AF18CFD30F1F4FDFAF1F4FB000EE4FDE7F1F4FD399E53B9C63138232D8BE191F5FB98B2')
$recv = tcprecv($connect, 999999)
write("recv: " & $recv)
EndFunc
func _send($packet)
$send = tcpsend($connect, "0x" & $packet)
write("offsets enviados: " & "(" & $send & ")" & " - " & $packet)
endfunc
func write($write)
consolewrite("[" & _NowTime() & "] - '" & $write & "'" & @CR)
endfunc

----edit

mas agora estou com outro problema, eu consigo me conectar perfeitamente com o servidor, mas o servidor precisa de me enviar um packet de resposta com aproximadamente 1900 bytes, porem ele não esta enviando, ele envia este packet logo depois que eu mando o packet de login, onde eu estou errado? tenho que fazer algum thread para os dois serem ativados simultaniamente? alguem pode ajudar? obrigado!

------------------------------------------------------------------------

google tradutor:

but now I have another problem, I can connect perfectly with my server but the server needs to send me a response packet with approximately 1900 bytes, but he did not send, it sends this packet after I send the packet to login, where I'm wrong? I have to do some thread to the two simultaneously be activated? can someone help? Thank you!

Edited by XBenny

Share this post


Link to post
Share on other sites

Maybe you should use the flagg set to 1 in TcpRecv.

Possibly you should wait for a connection before you send the string. (See TcpAccept.)

Maybe you need to increase the timeout on tcp functions.(Opt(TcpTimeout,???))


Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.

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