Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将buffer.toString()输出与Node.js中的另一个字符串连接起来_String_Node.js_Sockets_Buffer - Fatal编程技术网

如何将buffer.toString()输出与Node.js中的另一个字符串连接起来

如何将buffer.toString()输出与Node.js中的另一个字符串连接起来,string,node.js,sockets,buffer,String,Node.js,Sockets,Buffer,我正在使用一个简单的套接字脚本来建立到我的战地英雄服务器的rcon连接。我需要从返回的数据中获取种子,然后将其与用于创建所需登录哈希的密码连接起来。但是字符串不会与普通字符串方法连接。如果我单独输出字符串,它们会显示得很好,但它们不会合并,所以我可以对它们进行散列 var net = require('net'); var crypto = require('crypto'); var md5sum = crypto.createHash('md5'); var HOST = '<ip

我正在使用一个简单的套接字脚本来建立到我的战地英雄服务器的rcon连接。我需要从返回的数据中获取种子,然后将其与用于创建所需登录哈希的密码连接起来。但是字符串不会与普通字符串方法连接。如果我单独输出字符串,它们会显示得很好,但它们不会合并,所以我可以对它们进行散列

var net = require('net');
var crypto = require('crypto');
var md5sum = crypto.createHash('md5');

var HOST = '<ip address>', PORT = <port>,
PASSWORD = '<password>';
var client = new net.Socket();
client.connect(PORT, HOST, function() {
    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
});

client.on('data', function(data) {
    console.log(data.toString());
    response = data.toString();
    if (data.toString().slice(0,10) == "### Digest") {
        var seed = response.slice(17); 
        auth = seed.concat(PASSWORD);
        console.log('auth: '+auth);
        hash = require('crypto').createHash('md5').update(auth).digest("hex");
        console.log(hash);
        //client.write('login '+hash+' \n');
    }
    //client.destroy();
});

client.on('close', function() {
    //do something on close
});

client.on('error', function(err) {
    console.log(err);
});
var net=require('net');
var crypto=require('crypto');
var md5sum=crypto.createHash('md5');
变量主机=“”,端口=,
密码=“”;
var client=new net.Socket();
client.connect(端口、主机、函数(){
log('连接到:'+主机+':'+端口);
});
client.on('data',函数(data){
log(data.toString());
response=data.toString();
if(data.toString().slice(0,10)=“####摘要”){
var seed=响应切片(17);
auth=seed.concat(密码);
log('auth:'+auth);
hash=require('crypto').createHash('md5').update(auth.digest)('hex');
console.log(散列);
//write('login'+hash+'\n');
}
//client.destroy();
});
client.on('close',function()){
//近距离地做某事
});
client.on('error',函数(err){
控制台日志(err);
});

我找到了一个适合我的解决方案。不确定我是否已经完成了,但我决定将这两个字符串都传递给新的缓冲区。然后我将它们传递到一个数组中以合并它们。(耸耸肩)我想可以。有更好的解决办法吗

var net = require('net');
var crypto = require('crypto');
var md5sum = crypto.createHash('md5');

var HOST = '<ip address>', PORT = <port>,
PASSWORD = '<password>';
var client = new net.Socket();
client.connect(PORT, HOST, function() {
    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
});

client.on('data', function(data) {
    console.log(data.toString());
    response = data.toString();
    if (data.toString().slice(0,10) == "### Digest") {
        var a = new Buffer(response.slice(17));
        var b = new Buffer(PASSWORD);
        var auth = new Array();
        auth += a.toString().replace(/\n/g,'');
        auth += b.toString();
        hash = require('crypto').createHash('md5').update(auth).digest("hex");
        client.write('login '+hash+' \n');
    }
    //client.destroy();
});

client.on('close', function() {
    //do something on close
});

client.on('error', function(err) {
    console.log(err);
});
var net=require('net');
var crypto=require('crypto');
var md5sum=crypto.createHash('md5');
变量主机=“”,端口=,
密码=“”;
var client=new net.Socket();
client.connect(端口、主机、函数(){
log('连接到:'+主机+':'+端口);
});
client.on('data',函数(data){
log(data.toString());
response=data.toString();
if(data.toString().slice(0,10)=“####摘要”){
var a=新缓冲区(response.slice(17));
var b=新缓冲区(密码);
var auth=新数组();
auth+=a.toString().replace(/\n/g');
auth+=b.toString();
hash=require('crypto').createHash('md5').update(auth.digest)('hex');
write('login'+hash+'\n');
}
//client.destroy();
});
client.on('close',function()){
//近距离地做某事
});
client.on('error',函数(err){
控制台日志(err);
});

缓冲区工具有什么用处吗?您说“字符串不会与普通字符串方法连接”。他们会做什么呢?@WernerVesteras我有点希望使用本地方法。我对依赖第三方npm包来解决可能有简单解决方案的问题不感兴趣。但是非常感谢你。@maerics,它去掉了第二个字符串。仅显示来自buffer.toString()的种子。