简体   繁体   中英

NodeJs tcp socket receive chunk

const net = require('net')
const sockets = []
server.on('connection', sock => {
 log("tcp_server", "info", `Connected at ${sock.remoteAddress}:${sock.remotePort}`)

 sockets.push(sock);
    
 // Write the data back to all the connected, the client will receive it as data from the server
 sockets.forEach((sock, index, array) => {
             
 })




sock.on('data', data => {




})

// Add a 'close' event handler to this instance of socket
sock.on('close', data => {

})  // end sock.on
})  


 
server.listen(conf.port, conf.serverHost, () => {
    const address = server.address()
    const port = address.port
    const family = address.family
    const ipaddr = address.address
    
    log("tcp_server", "info", 'Server is listening at port ' + port)
    log("tcp_server", "info", 'Server ip :' + ipaddr)
    log("tcp_server", "info", 'Server is IP4/IP6 : ' + family)
})   

this is my socket tcp server and i faced problem with receive chunk data in c# its easy to receive every chunk if i know the size of it and i can control how much byte i want to receive every time

now in NodeJs i can get the buffer length by get first 5 byte and then get the size of the message

var size = (buff[1] << 24) | (buff[2] << 16) | (buff[3] << 8) | buff[4];

i tried this simple code for get the chunk data and process it

first i define a Buffer in top

var mybuffer = Buffer.alloc(30);
var length = 0;
 

sock.on('data', data => {


data.copy(mybuffer, length , 0, data.length); //copy buffer to mybuffer
length += data.length;

//now check if my length is 5 or greater i can determine the buffer size i sent
 size = (buff[1] << 24) | (buff[2] << 16) | (buff[3] << 8) | buff[4];

 //now need to continue receive until i reach (size - length) = total bytes i sent

})

this what i tried for receive all the chunk but still need more work any idea how to receive all data depend on size i sent on first 5 bytes of every message

I found this code easysocket ! similar to what i want i just made simple edit to the code and its work like charm

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM