2013-10-02 2 views
0

У меня проблема с моим программным snipet. Я написал пример, чтобы узнать TCP Socket Communication для проекта. На данный момент я могу отправить TCP Socket и прочитать ответ, но я хочу использовать ответ в других частях программного обеспечения. Для этого я попытался использовать переменную socketmessage, но это не работает. У кого-нибудь есть ответ на мою проблему? Большое спасибоNode.js читает TCPSocket и записывает переменную

var net = require('net'); 
var client = new net.Socket(); 
var HOST='127.0.0.1'; 
var PORT='20000'; 

var MSG="{\"REQUEST\":\"STATUS\"}";  
var socketmessage; 

socketmessage=getSocketMessage(MSG); 
console.log ("Socket Message: " + socketmessage); 

function getSocketMessage(tcpmsg){ 
    var outData; 

    client.connect(PORT, HOST, function() { 
    console.log("Client: " + tcpmsg); 
    client.write(tcpmsg); 
    }); 

    client.setTimeout(5000, function() { client.destroy(); }); 

    client.on('data', function(data) { 
    console.log('Server: ' + data); 
    outData = data.toString('utf8'); 
    console.log ("Socketmessage: " + outData); 
    client.destroy(); 
    }); 

    //Add a 'close' event handler for the client socket 
    client.on('close', function() { 
    console.log('Connection closed'); 
    }); 

    // Add a 'error' event handler for the client socket 
    client.on('error', function(error) { 
    console.log('Error Connection: ' + error); 
    }); 

    return outData; 
} 

Terminal: гнездо Сообщение не определено Клиент: { "ЗАПРОС": "STATUS"} сервера: { "STATUS": 0.000000}

ответ

1

Это происходит потому, что функция getSocketMessage асинхронный , Вы пытаетесь вернуть полученное сообщение. Функция немедленно возвращается, а outData не определено. Его значение равно , когда данные поступают с сервера. Сеть I/O является evented, событие вы используете data

client.on('data', function(data) { 

Полученное сообщение может быть обработано правильно только внутри обработки события для data. Вы должны были бы назвать свою другую часть здесь.

Смежные вопросы