mirror of https://github.com/nodejs/node.git
dgram: send() can accept strings
Strings passed to Socket#send() will be passed to Buffer and parsed as UTF8.pull/5010/head
parent
0396b20ff4
commit
8130744044
|
@ -74,7 +74,7 @@ Emitted when an error occurs.
|
||||||
|
|
||||||
### socket.send(buf, offset, length, port, address, [callback])
|
### socket.send(buf, offset, length, port, address, [callback])
|
||||||
|
|
||||||
* `buf` Buffer object. Message to be sent
|
* `buf` Buffer object or string. Message to be sent
|
||||||
* `offset` Integer. Offset in the buffer where the message starts.
|
* `offset` Integer. Offset in the buffer where the message starts.
|
||||||
* `length` Integer. Number of bytes in the message.
|
* `length` Integer. Number of bytes in the message.
|
||||||
* `port` Integer. destination port
|
* `port` Integer. destination port
|
||||||
|
@ -93,6 +93,11 @@ If the socket has not been previously bound with a call to `bind`, it's
|
||||||
assigned a random port number and bound to the "all interfaces" address
|
assigned a random port number and bound to the "all interfaces" address
|
||||||
(0.0.0.0 for `udp4` sockets, ::0 for `udp6` sockets).
|
(0.0.0.0 for `udp4` sockets, ::0 for `udp6` sockets).
|
||||||
|
|
||||||
|
With consideration for multi-byte characters, `offset` and `length` will
|
||||||
|
be calculated with respect to
|
||||||
|
[byte length](buffer.html#buffer_class_method_buffer_bytelength_string_encoding)
|
||||||
|
and not the character position.
|
||||||
|
|
||||||
Example of sending a UDP packet to a random port on `localhost`;
|
Example of sending a UDP packet to a random port on `localhost`;
|
||||||
|
|
||||||
var dgram = require('dgram');
|
var dgram = require('dgram');
|
||||||
|
|
|
@ -235,8 +235,11 @@ Socket.prototype.send = function(buffer,
|
||||||
callback) {
|
callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
if (util.isString(buffer))
|
||||||
|
buffer = new Buffer(buffer);
|
||||||
|
|
||||||
if (!util.isBuffer(buffer))
|
if (!util.isBuffer(buffer))
|
||||||
throw new TypeError('First argument must be a buffer object.');
|
throw new TypeError('First argument must be a buffer or string.');
|
||||||
|
|
||||||
offset = offset | 0;
|
offset = offset | 0;
|
||||||
if (offset < 0)
|
if (offset < 0)
|
||||||
|
|
|
@ -48,5 +48,14 @@ assert.throws(function() {
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
socket.send(buf, 4, 4, common.PORT, '127.0.0.1', assert.fail);
|
socket.send(buf, 4, 4, common.PORT, '127.0.0.1', assert.fail);
|
||||||
});
|
});
|
||||||
|
assert.throws(function() {
|
||||||
|
socket.send('abc', 4, 1, common.PORT, '127.0.0.1', assert.fail);
|
||||||
|
});
|
||||||
|
assert.throws(function() {
|
||||||
|
socket.send('abc', 0, 4, common.PORT, '127.0.0.1', assert.fail);
|
||||||
|
});
|
||||||
|
assert.throws(function() {
|
||||||
|
socket.send('abc', -1, 2, common.PORT, '127.0.0.1', assert.fail);
|
||||||
|
});
|
||||||
|
|
||||||
socket.close(); // FIXME should not be necessary
|
socket.close(); // FIXME should not be necessary
|
||||||
|
|
|
@ -27,6 +27,6 @@ var dgram = require('dgram');
|
||||||
|
|
||||||
// Should throw but not crash.
|
// Should throw but not crash.
|
||||||
var socket = dgram.createSocket('udp4');
|
var socket = dgram.createSocket('udp4');
|
||||||
assert.throws(function() { socket.send('BAM', 0, 1, 1, 'host') }, TypeError);
|
assert.throws(function() { socket.send(true, 0, 1, 1, 'host') }, TypeError);
|
||||||
assert.throws(function() { socket.sendto('BAM', 0, 1, 1, 'host') }, TypeError);
|
assert.throws(function() { socket.sendto(5, 0, 1, 1, 'host') }, TypeError);
|
||||||
socket.close();
|
socket.close();
|
||||||
|
|
|
@ -25,11 +25,10 @@
|
||||||
var common = require('../common');
|
var common = require('../common');
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
|
|
||||||
var Buffer = require('buffer').Buffer,
|
var fs = require('fs'),
|
||||||
fs = require('fs'),
|
|
||||||
dgram = require('dgram'), server, client,
|
dgram = require('dgram'), server, client,
|
||||||
server_port = 20989,
|
server_port = 20989,
|
||||||
message_to_send = new Buffer('A message to send'),
|
message_to_send = 'A message to send',
|
||||||
timer;
|
timer;
|
||||||
|
|
||||||
server = dgram.createSocket('udp4');
|
server = dgram.createSocket('udp4');
|
||||||
|
|
Loading…
Reference in New Issue