gpt4 book ai didi

c# - 如何使用 C# 应用程序向 Firefox 扩展发送消息?

转载 作者:可可西里 更新时间:2023-11-01 16:44:46 26 4
gpt4 key购买 nike

我已经创建了一个 Firefox 扩展和一个 C# 应用程序,我需要向我的扩展发送一个 String 来执行一些工作

我需要像套接字一样通过 HTTP 请求发送它。我已阅读有关 nsIServerSocket 的内容,但无法连接到我的 C# 应用程序

Firefox(扩展)代码:

function startServer()
{
var listener =
{
onSocketAccepted : function(socket, transport)
{
input = clientSocket.openInputStream(0, 0, 0);
},

onStopListening : function(socket, status){}
};

var serverSocket = Components.classes["@mozilla.org/network/server-socket;1"]
.createInstance(Components.interfaces.nsIServerSocket);

serverSocket.init(9999,true,-1);
serverSocket.asyncListen(listener);
}

window.addEventListener("load", function() { startServer(); }, false);

C#(应用程序)代码:

public void acceptClient()
{
TcpListener server = null;

Int32 port = 9999;
IPAddress localAddr = IPAddress.Parse("?");
// **no idea what IP address should come here**

server = new TcpListener(localAddr, port);

server.Start();

// Buffer for reading data
Byte[] bytes = new Byte[256];

// listening loop.
while (true)
{
Console.Write("Waiting for a connection... ");
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Event was fired!");

}
}

现在,我有点难以继续下去了。

最佳答案

input是一个nsIInputStream实例,需要读出来:

Components.utils.import("resource://gre/modules/NetUtil.jsm");

...

var input = clientSocket.openInputStream(0, 0, 0);
var data = "";
NetUtil.asyncFetch(input, function(stream, result)
{
if (!Components.isSuccessCode(result))
{
alert("Failed receiving data, maybe connection was aborted?");
return;
}

var data = NetUtil.readInputStreamToString(stream, stream.available());
alert(data);
});

参见 NetUtil.jsm documentation .

不要忘记将 onSocketAccepted 中的参数名称从 socket 更改为 clientSocket - 现在您没有定义 clientSocket 变量。

关于c# - 如何使用 C# 应用程序向 Firefox 扩展发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9680809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com