2016-01-27 2 views
0

Я пытаюсь отправить сообщение с сайта asp.net в файл python, работающий на малине pi. Если это код для python на piASP.NET и Python Communication

import socket 

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
serversocket.bind(('localhost', 8089)) 
serversocket.listen(5) # become a server socket, maximum 5 connections 

while True: 
    connection, address = serversocket.accept() 
    buf = connection.recv(64) 
    if len(buf) > 0: 
    print buf 
    break 

Мне просто нужна помощь при запуске. Предполагая, что я знаю внешний и внутренний IP-адрес Raspberry Pi, который запускает код Python, как мне начать с кода с помощью ASP.NET?

Могу ли я использовать socket.io или что-то еще? Какая лучшая идея или метод для связи между сайтом ASP.NET и Python? Я знаю, что вопрос очень общий, но мне просто нужна помощь, чтобы начать работу в правильном направлении.

+0

Если сервер Python прослушивает непосредственно сокет (и не использует какой-либо протокол, такой как HTTP или что-то еще), то я предполагаю, что прямое подключение к сокету из .NET было бы правильным путем. Ты пробовал? – David

+0

Почему вы используете сокет? Попробуйте 'wsgiref', это очень просто. – dsgdfg

ответ

0

(Edit) Улучшен код ASP.NET:

protected void Page_Load(object sender, EventArgs e) 
{ 

    TcpClient client = new TcpClient("192.168.1.107", 8012); 

    // Translate the passed message into ASCII and store it as a Byte array. 
    Byte[] data = System.Text.Encoding.ASCII.GetBytes("Hello There"); 

    // Get a client stream for reading and writing. 
    // Stream stream = client.GetStream(); 

    NetworkStream stream = client.GetStream(); 

    // Send the message to the connected TcpServer. 
    stream.Write(data, 0, data.Length); 

    // Receive the TcpServer.response. 

    // Buffer to store the response bytes. 
    data = new Byte[256]; 

    // String to store the response ASCII representation. 
    String responseData = String.Empty; 

    // Read the first batch of the TcpServer response bytes. 
    Int32 bytes = stream.Read(data, 0, data.Length); 
    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); 
    Response.Write(responseData); 

    // Close everything. 
    stream.Close(); 
    client.Close(); 
    } 
} 

работает и что я использую сейчас. Есть ли лучший вариант? Спасибо за ответы. :)