Effacer les filtres
Effacer les filtres

Tcpclient send [FIN, ACK]

11 vues (au cours des 30 derniers jours)
Malin
Malin le 17 Fév 2023
Commenté : Malin le 23 Mar 2023
Hi!
I'm trying to communicate with an external server from MATLAB using tcpclient.
To test the connection, the server can be quarried with a ping sending a message in the format '{ "Ping" : 1 }', the response is '{ "Pong" : 1 }'.
Using wireshark, a correct sequence for the ping procedure is:
i.e. the server expects a tcp packet with the FIN flag enabled indicating "end of message" .
Using python the behavior can be replicated using the socket library
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 8333))
s.sendall('{ "Ping" : 1 }'.encode())
s.shutdown(1)
data = s.recv(15)
print ('Received', data.decode())
Using Matlab and tcpclient I'm not able to get this behavior with the FIN packets, indicating end of message.
I've tried
client = tcpclient("0.0.0.0",8333,'Timeout',1)
configureTerminator(client,"CR")
data='{ "Ping" : 1 }'
writeline(client,data)
response=readline(client)
fclose(client);
delete(client)
but the server only response after getting a [FIN] packet, which only occurs with "delete(client)", which means I cannot handle the response as I've just deleted the client.
My question is if there's a way to sending a [FIN] packet without deleting the object handling the communication using tcpclient and Matlab?
Kind regards
/Marcus

Réponse acceptée

Surya
Surya le 20 Mar 2023
Hi,
You can make use to Python MATLAB interface to resolve the issue.
Here is the sample code,
s = py.socket.socket(py.socket.AF_INET, py.socket.SOCK_STREAM)
s.connect({'localhost', int32(8333)});
req = py.str('{ "Ping" : 1 }').encode()
s.sendall(req);
s.shutdown(1);
data = s.recv(15)
For this to work, you need MATLAB compatible python installed in your system. here
  1 commentaire
Malin
Malin le 23 Mar 2023
Hi,
Thanks for the answer, didn't know about the Python MATLAB so will try your approach!
/Marcus

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by