How can I send data from Matlab UDP client to a python server on to different PCs?

2 Ansichten (letzte 30 Tage)
I'm trying to send data from one PC running a Matlab udp client to another PC(running ubuntu) which has a python udp server. But nothing happens. I've tried disabling the firewall and looking through the forums but havent found a solution yet. Hope someone can asisst me with this issue. Its a crucial part of my capstone project. Thanks in advance!
This is the code for the Matlab udp client:
ipA = '155.69.124.203', portA = 5005; % PC running Matlab
ipB = '10.27.109.80', portB = 5006; % PC running python server
udpA = udp(ipB,portB,'LocalPort',portA);
fopen(udpA);
tstart = datevec(now);
while etime(datevec(now),tstart)<30
fprintf(udpA, 'Great')
pause(3)
end
fclose(udpA);
clear ipb portB ipA portA udpA
This is the code for the python server:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import socket
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind the socket to the port
server_address = ('localhost', 5006)
print('starting up on {} port {}'.format(*server_address))
sock.bind(server_address)
while True:
print('\nwaiting to receive message')
data, address = sock.recvfrom(4096)
print('received {} bytes from {}'.format(
len(data), address))
print(data)
  4 Kommentare
Izzat Adnan
Izzat Adnan am 2 Feb. 2020
Its my mistake. I put the wrong ip adress of the server PC. Its working now. Thanks.
Alvaro Torrejón Padilla
Alvaro Torrejón Padilla am 8 Jul. 2022
Hi Izzat,
I want to connect matlab with python, sending data via ip network. I have my python script which acts as a server using socket. I'm trying to use your code so i can use my matlab script as a client and send string data to python. But nothing works.
PYTHON SERVER SCRIPT
# Echo server program
import socket
import threading
HEADER= 64
PORT = 5050
SERVER = socket.gethostbyname(socket.gethostname())
print(SERVER)
ADDR = (SERVER,PORT)
FORMAT ='utf-8'
DISCONNECT_MESSAGE="!DISCONNECT"
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(ADDR)
def handle_client (conn, addr):
print(f"[NEW CONNECTION] {addr} connected.")
connected =True
while connected:
msg_length= conn.recv(HEADER).decode(FORMAT)
if msg_length:
msg_length = int(msg_length)
msg = conn.recv(msg_length).decode(FORMAT)
if msg == DISCONNECT_MESSAGE:
connected=False
print(f"[{addr}] {msg}")
conn.close()
def start():
server.listen()
print(f"[LISTENING] Server is listenning on {SERVER}")
while True:
addr, conn = server.accept()
thread= threading.Thread(target=handle_client,args=(conn,addr))
thread.start()
print(f"[ACTIVE CONNECTIONS] {threading.activeCount() -1}")
print("[STARTING] server is starting...")
start()
MATLAB CLIENT SCRIPT
ipA = 'IP MATLAB CLIENT', portA = 5051; % PC running Matlab
ipB = 'IP PYTHON SERVER', portB = 5050; % PC running python server
udpA = udp(ipB,portB,'LocalPort',portA);
fopen(udpA);
tstart = datevec(now);
while etime(datevec(now),tstart)<30
fprintf(udpA, 'Great')
pause(3)
end
fclose(udpA);
clear ipb portB ipA portA udpA
%%%%
I would be very grateful if you could help me with that.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Instrument Control Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by