Sponsored Link

nsIServerSocket

もじら組の記事にあるとおり、Necko にサーバー側ソケットのコードが入ったとのこと。新しもの好きですから、ちょこちょこいじってます。

目次

nsIServerSocketを使う最小のソース

C++で書かれたサンプルソースをJavaScriptに書き換えただけです。ちょっとすっ飛ばしたところがあったり、エラー処理を省いているところがありますのでご了承を。


<?xml version="1.0"?>

<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
	
<window
	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
	title="server" id="mainwindow">
	
	<script>
	<![CDATA[

	var serverSocketListener={

			onSocketAccepted : function(aServ,aTransport){
				var input;
				var output;
				input = aTransport.openInputStream(1, 0, 0);
				output = aTransport.openOutputStream(1, 0, 0);
				const response = "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\nFooooopy!!\r\n";
				rv = output.write(response, response.length);
				input.close();
				output.close();
				return true;	
			},

			onStopListening:function(aServ,aTransport){
				return true;	
			}
	}

	var serverSocket;
	function makeServer(){
		var rv;
		serverSocket=Components.classes["@mozilla.org/network/server-socket;1"]
		.createInstance(Components.interfaces.nsIServerSocket);
		rv=serverSocket.init(60053,true,5);//第一引数はポート番号
		rv=serverSocket.asyncListen(serverSocketListener);
		}
	]]>
	</script>
		<button onclick="makeServer();" label="start"/>
		<button onclick="serverSocket.close();" label="stop"/>
</window>

Contents

作成者:plus7 メール 最終更新:2003/12/06