Reputation: 745
I have written a UDP server in C, and I am trying to connect to it from nodejs using the following client code:
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('error', (err) => {
console.log(`server error:\n${err.stack}`);
server.close();
});
server.on('message', (msg, rinfo) => {
console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});
server.on('listening', () => {
const address = server.address();
console.log(`server listening ${address.address}:${address.port}`);
});
server.bind(3000);
The server is also running on port 3000, and I am getting this error when I execute the nodejs code:
client error:
Error: bind EADDRINUSE 0.0.0.0:3000
at state.handle.lookup (dgram.js:242:18)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3
Why is this happening?
Thank you
Upvotes: 1
Views: 3094
Reputation: 30675
Maybe you could try the following code, this will create a UDP client and send a message to your server, I'm assuming it's on localhost , port 3000.
It will also print any response:
client.js:
const dgram = require("dgram");
const PORT = 3000;
const HOST = '127.0.0.1';
const message = Buffer.from("Hey there!!", "utf8");
const client = dgram.createSocket('udp4');
client.on("message", function (message, remote) {
console.log(`UDP message received from: ${remote.address}:${remote.port} - ${message}`);
});
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
if (err) {
console.error(`UDP message send error:`, err);
} else {
console.log(`UDP message sent to ${HOST}:${PORT}`);
}
});
You can try testing with a Node.js server if you wish as well, here is some adapted code from the Node.js docs:
server.js:
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('error', (err) => {
console.log(`server error:`, err);
server.close();
});
server.on('message', (msg, rinfo) => {
console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
// Echo message back to client
server.send("I got a message from you: " + msg, rinfo.port);
});
server.on('listening', () => {
const address = server.address();
console.log(`server listening ${address.address}:${address.port}`);
});
server.bind(3000);
Upvotes: 2