0
在node.js中,可能有半開放套接字。這意味着套接字可以在不關閉整個套接字的情況下變爲只讀或寫入。對於這樣的一個例子:半開放套接字
var net = require("net");
net.createServer({allowHalfOpen:true},function(c){
c.on("data",function(d){
console.log(d+"");
});
c.on("end",function(){
console.log("ended");
c.end("thx");
});
}).listen(888);
var c = net.connect(888,function(){
c.end("hi");
c.on("data",function(d){
console.log(d+"");
});
c.on("end",function(){
console.log("ended");
});
});
輸出:
hi
ended
thx
ended
有沒有在C#的方式來關閉套接字的一個方向?另外,有沒有辦法知道套接字是否可讀,但不可寫,反之亦然?
哦,真的!這很酷。但是,如果遠程套接字已關閉讀取流或寫入流,我怎樣才能檢測是否可以讀取或寫入當前套接字? –
@VanCoding如果另一端已經關閉了輸出,當你閱讀時,你會得到EOS,就像他關閉了整個連接一樣。如果他關閉輸入取決於他的平臺(NB不是你的),會發生什麼情況。 BSD只會丟掉你的數據; Linux會緩衝它,所以當他的socket接收緩衝區填滿時你最終會阻塞; Windows將發送一個RST,它將在您的最後成爲「斷開的管道」或「由對等方重置的連接」。 – EJP
我發現如何確定讀取或寫入流是否關閉。我可以用正確的SelectMode使用輪詢方法。 –