-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtcp.js
53 lines (42 loc) · 1.24 KB
/
tcp.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
var lib = require('..');
module.exports = function tcp (t) {
var ipaddr, ls, cs, as, recv, size_t, msg, sz;
t.test('tcp listen', listen);
t.test('tcp connect', connect);
t.test('tcp accept', accept);
t.test('tcp send', send);
t.test('tcp recv', recvmsg);
}
function listen (t) {
t.plan(2);
size_t = process.arch == 'arm' ? 4 : 8;
ipaddr = lib.iplocal(44444);
ls = lib.tcplisten(ipaddr);
t.ok( Buffer.isBuffer(ls), 'listening socket (ls) is a buffer' );
t.is( ls.length, size_t, 'socket length is ' + size_t );
}
function connect (t) {
t.plan(2);
cs = lib.tcpconnect(ipaddr);
t.ok( Buffer.isBuffer(cs), 'connected socket (cs) is a buffer' );
t.is( cs.length, size_t, 'socket length is ' + size_t );
}
function accept (t) {
t.plan(2);
as = lib.tcpaccept(ls);
t.ok( Buffer.isBuffer(as), 'accepted socket (as) is a buffer' );
t.is( as.length, size_t, 'socket length is ' + size_t );
}
function send (t) {
t.plan(1);
msg = new Buffer('some low latency msgs!\n');
sz = lib.tcpsend(as, msg);
lib.tcpflush(as);
t.is(sz, 23, 'tcpsend msg size is ' + sz + ' bytes');
}
function recvmsg (t) {
t.plan(1);
recv = lib.tcprecv(cs, sz);
t.is(String(recv), String(msg), 'msg: ' + recv);
lib.tcpclose(as);
}