NodeJsネットワークプログラミングの構築TCP、UDP接続
3042 ワード
nodeプラットフォームはイベントドライブ、シングルスレッド、非同期IOなどの特性があり、非常に良い伸縮性があり、分散型ネットワークで様々な役割を演じるのに適しています.
TCP接続を実現する
TCPサービスはネットワーク応用において非常に一般的であり、ほとんどのアプリケーションはTCPに基づいて構築されている.TCPフルネーム転送制御プロトコルは、7層モデルにおいてトランスポート層プロトコルに属する.また、TCPサービスは接続に向けたサービスであり、3回握手して会話を形成する必要があります.
TCPを作成するサーバ端
私たちはTelnetを利用して簡単な接続要求ができます.
UDP接続を実現
UDPソケットは、クライアントとしてデータを送信したり、サーバとしてデータを受信したりすることができます.
UDPサーバを作成
ソケットにネットワークメッセージを受信させたいなら、ネットカードとポートを紐付けすればいいです. UDPソケットもただのEventEmitterの例であり、Streamの例ではなく、message、listen、close、errorイベントを備えています.
TCP接続を実現する
TCPサービスはネットワーク応用において非常に一般的であり、ほとんどのアプリケーションはTCPに基づいて構築されている.TCPフルネーム転送制御プロトコルは、7層モデルにおいてトランスポート層プロトコルに属する.また、TCPサービスは接続に向けたサービスであり、3回握手して会話を形成する必要があります.
TCPを作成するサーバ端
var net = require('net');
var server = net.createServer(function (socket) {
socket.on('data',function (data) {
socket.write('hello !');
});
socket.on('end',function () {
console.log(" ");
});
socket.write("welcome!");
});
server.listen(8124,function () {
console.log("server bound");
});
私たちはnet.create Serverを使ってサーバーを作成します.listenerはモニターです.本質的にはEventEmitterの実例です.彼のカスタムバインディング監聴イベントはlistening、connection、close、errorの下の方式もモニター機能を実現できます.var net = require("net");
var server = net.creatServer();
server.on('connection',function(){
//
console.log("connect");
});
server.listen(8124);
TCPクライアント開始要求私たちはTelnetを利用して簡単な接続要求ができます.
telnet 127.0.0.1 8124
あるいはネットモジュールを通じて会話をします.var net =require("net");
var client = net.connect({port:8124},function () {
console.log("client conneted");
client.write("world");
});
client.on("data",function (data) {
console.log(data.toString());
client.end();
});
client.on("end",function () {
console.log("client disconneting");
});
サーバは、複数のクライアントと同時に接続を維持することができ、接続ごとに典型的な書き取り可能なstreamオブジェクトであり、彼はdataイベントを通じて読み取りもでき、また、write()方法でデータを送信することもできる.これはdata,end,connect,drain,error,close,timeoutを含むカスタムイベントを持っています.これ以外にpipeを利用してパイプ操作ができます.var server = net.creatServer(function(socket){
socket.pipe(socket);
})
同時に、TCPはネットワークの中の小さいパケットに対してNagleアルゴリズムを使って最適化し、バッファエリアのデータが一定のデータまたは一定の時間に達して発行されることが要求されるので、小さいパケットは合併して発行されるかもしれない.使いたくないなら、socket.set NoDelay(true)を使って消すことができます.UDP接続を実現
UDPソケットは、クライアントとしてデータを送信したり、サーバとしてデータを受信したりすることができます.
UDPサーバを作成
ソケットにネットワークメッセージを受信させたいなら、ネットカードとポートを紐付けすればいいです.
var dgram = require("dgram");
var server = dgram.createSocket("udp4");
server.on("message",function(msg,rinfo){
console.log("server got:" + msg + " from " + rinfo.address + ":" + rinfo.port);
});
server.on("listening",function(){
var address = server.address();
console.log("server listening" + address.address + ":" + address.port);
});
server.bind(41234);
UDPクライアントを作成var dgram = require("dgram");
var message = new Buffer("nodejs");
var client = dgram.createSocket("udp4");
client.send(message,0,message.length,41234,"localhost",function(err,bytes){
client.close();
});
ここでパラメータsocket.send(buf,offset,length,port,address,[calback])を送ります.