簡體   English   中英

Node.js和C#組合查詢

[英]nodejs and c# combinationquery

我正在構建一個應用程序,其中需要有ac#服務器和nodejs客戶端。 我已經構建了組件,但是我總是收到ECONNREFUSED錯誤。 除此錯誤外,我什么時候都可以?

僅供參考,我能夠從c#客戶端連接到c#服務器。 同樣。 我能夠從nodejs tcp客戶端連接到nodejs tcp服務器。 但是我面臨着這種混合的錯誤。

嘿,很抱歉不及早添加代碼。 以下是C#服務器代碼:

using System;
using System.Text;
using AsyncClientServerLib.Server;
using System.Net;
using AsyncClientServerLib.Message;
using SocketServerLib.SocketHandler;
using SocketServerLib.Server;

namespace TestApp
{
    delegate void SetTextCallback(string text);

    public partial class FormServer : Form
    {
        private BasicSocketServer server = null;
        private Guid serverGuid = Guid.Empty;

        public FormServer()
        {
            InitializeComponent();
        }

        protected override void OnClosed(EventArgs e)
        {
            if (this.server != null)
            {
                this.server.Dispose();
            }
            base.OnClosed(e);
        }

        private void buttonStart_Click(object sender, EventArgs e)
        {
            this.serverGuid = Guid.NewGuid();
            this.server = new BasicSocketServer();
            this.server.ReceiveMessageEvent += new SocketServerLib.SocketHandler.ReceiveMessageDelegate(server_ReceiveMessageEvent);
            this.server.ConnectionEvent += new SocketConnectionDelegate(server_ConnectionEvent);
            this.server.CloseConnectionEvent += new SocketConnectionDelegate(server_CloseConnectionEvent);
            this.server.Init(new IPEndPoint(IPAddress.Loopback, 2147));
            this.server.StartUp();
            this.buttonStart.Enabled = false;
            this.buttonStop.Enabled = true;
            this.buttonSend.Enabled = true;
            MessageBox.Show("Server Started");
        }

        void server_CloseConnectionEvent(AbstractTcpSocketClientHandler handler)
        {
            MessageBox.Show(string.Format("A client is disconnected from the server"), "Socket Server", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        void server_ConnectionEvent(AbstractTcpSocketClientHandler handler)
        {
            MessageBox.Show(string.Format("A client is connected to the server"), "Socket Server", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        void server_ReceiveMessageEvent(SocketServerLib.SocketHandler.AbstractTcpSocketClientHandler handler, SocketServerLib.Message.AbstractMessage message)
        {
            BasicMessage receivedMessage = (BasicMessage)message;
            byte[] buffer = receivedMessage.GetBuffer();
            if (buffer.Length > 1000)
            {
                MessageBox.Show(string.Format("Received a long message of {0} bytes", receivedMessage.MessageLength), "Socket Server", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            string s = System.Text.ASCIIEncoding.Unicode.GetString(buffer);
            this.SetReceivedText(s);
        }

        private void buttonStop_Click(object sender, EventArgs e)
        {
            this.server.Shutdown();
            this.server.Dispose();
            this.server = null;
            this.buttonStart.Enabled = true;
            this.buttonStop.Enabled = false;
            this.buttonStop.Enabled = false;
            MessageBox.Show("Server Stopped");
        }

        private void SetReceivedText(string text)
        {
            if (this.textBoxReceived.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetReceivedText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                this.textBoxReceived.Text = text;
            }
        }

        private void buttonSend_Click(object sender, EventArgs e)
        {
            ClientInfo[] clientList = this.server.GetClientList();
            if (clientList.Length == 0)
            {
                MessageBox.Show("The client is not connected", "Socket Server", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            AbstractTcpSocketClientHandler clientHandler = clientList[0].TcpSocketClientHandler;
            string s = this.textBoxSend.Text;
            byte[] buffer = System.Text.ASCIIEncoding.Unicode.GetBytes(s);
            BasicMessage message = new BasicMessage(this.serverGuid, buffer);
            clientHandler.SendAsync(message);
        }
    }
}

以下是nodejs客戶端代碼。

var sys = require("sys"),
    net = require("net");

var client = net.createConnection(2147);
client.setEncoding("UTF8");

client.addListener("connect", function() {
    sys.puts("Client connected.");
    // close connection after 2sec
    setTimeout(function() {
        sys.puts("Sent to server: close");
        client.write("close", "UTF8");
    }, 2000);
});

client.addListener("data", function(data) {
    sys.puts("Response from server: " + data);
    if (data == "close") client.end();
});

client.addListener("close", function(data) {
    sys.puts("Disconnected from server");
});

我能夠解決這個問題。 這只是一個被忽略的問題。 在服務器代碼中,我使用分配給機器的局域網地址,但在客戶端中,我使用的是127.0.0.1。 當我將兩者都更改為相同的值時,不會出現econnrefused錯誤。 現在,我可以發送和接收數據了。 但是,我經常收到ECONNRESET錯誤。 有什么線索嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM