Отправлять значения датчиков с Beaglebone Black на сервер сокетов в Windows

У меня есть клиентский код сокета TCP Python на моем Beaglebone Black, который считывает данные с датчика и отправляет их на сервер. Мой сервер находится в Windows в Visual Studio и написан на C#. Beaglebone Black и ПК с Windows подключены через SSH с помощью Putty. Проблема в том, что сервер и клиент не видят друг друга. Однако все работает, когда я использую ПК с Ubuntu (сервер, написанный на python) вместо Windows.

Не могли бы вы помочь мне установить соединение. Думаю проблема на стороне сервера.

P.S. Сервер должен быть написан на C# в связи с планами на будущее.

Вот мой код сервера C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace Server_Tutorial
{
    class Program
    {
        static void Main(string[] args)
        {
            IPAddress ip = Dns.GetHostEntry("192.168.7.1").AddressList[0];
            TcpListener server = new TcpListener(ip, 7000);
            TcpClient client = default(TcpClient);

            try
            {
                server.Start();
                Console.WriteLine("Server started...");
                Console.Read();
            } catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.Read();
            }

            while (true)
            {
                client = server.AcceptTcpClient();

                byte[] receivedBuffer = new byte[100];
                NetworkStream stream = client.GetStream();


                stream.Read(receivedBuffer, 0, receivedBuffer.Length);

                StringBuilder msg = new StringBuilder();

                foreach (byte b in receivedBuffer)
                {
                    if (b.Equals(00))
                    {
                        break;
                    }
                    else
                    {
                        msg.Append(Convert.ToChar(b).ToString());
                    }
                }

                Console.WriteLine(msg.ToString() + msg.Length);
            }
        }
    }
}

А это клиентский код на Python:

import Adafruit_BBIO.ADC as ADC
import time
import socket
import sys

serverAddr = ('192.168.7.1', 7000)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(serverAddr)

fsr = 'P9_40'

ADC.setup()

while True:
        reading = ADC.read(fsr)*1000
        reading = int(round(reading))
        client.send(str(reading))

client.close()

А это серверный код на Python, который работает в Ubuntu:

import socket
import sys

HOST = ''
PORT = 7000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')

try:
        s.bind((HOST, PORT))
except socket.error as msg:
        print('Bind failed. ')
        sys.exit()

print('Socket bind complete')

s.listen(10)
print('Socket now listening')

conn, addr = s.accept()
print('Connected to ' + addr[0] + ':' + str(addr[1]))

while True:
        data = conn.recv(1024)
        line = data.decode('UTF-8')    # convert to string (Python 3 only)
        line = line.replace("\n","")   # remove newline character
        print( line )

s.close()
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
603
1

Ответы 1

Вы пробовали запустить: netstat -a -b

на вашем ПК?

Если бы он показал, что ваш порт 7000 уже используется другим TCP-соединением, вы можете просто переключиться на port 8080 или другой, который вам нравится, для успешного подключения.

Другие вопросы по теме