C#-无法连接我的套接字服务器

时间:2018-08-01 15:40:05

标签: c# node.js sockets unity3d arduino

下午好,亲爱的社区,

我目前正在研究Arduino + Unity项目,该项目应该通过Unity构建Arduino控件。为此,我设置了Arduino并连接到wifi。

我用C#构建了一个套接字服务器。问题是:我能够通过Node.js套接字客户端连接到此Socket服务器,但是要检查我的Arduino设置是否损坏,我已经构建了Node.js套接字服务器并能够连接Node.js。通过Arduino成功完成套接字服务器。 (我在这里使用Node.js的唯一原因是,因为我在该平台上更流利,所以我能够检查出什么地方错了,所以最终项目中没有任何Node.js。)所以;

Node.js客户端-> Unity C#服务器(Works)

Arduino客户端-> Node.js服务器(工作)(下面是Arduino输出)

AT+CIPSTART=3,"TCP","192.168.1.67",1234
OK
Linked

Arduino客户端-> Unity C#服务器(不起作用)(下面是Arduino输出)

AT+CIPSTART=3,"TCP","192.168.1.67",1234
ERROR
Unlink

下面,我将所有C#,Node.js和Arduino代码放入。我不认为这里存在Arduino硬件问题,但不明白为什么我无法连接我的 Unity套接字服务器。

using System;
using System.Net.Sockets;
using System.Threading;
using System.Net;
using UnityEngine;

public class SocketScript : MonoBehaviour {
    Thread tcpListenerThread;

    void Start()
    {
        tcpListenerThread = new Thread(() => ListenForMessages(1234));
        tcpListenerThread.Start();
    }

    public void ListenForMessages(int port)
    {
        TcpListener server = null;
        try
        {

            IPAddress localAddr = IPAddress.Parse("192.168.1.67");
            server = new TcpListener(localAddr, port);
            server.Start();

            Byte[] bytes = new byte[256];
            String data = null;

            while(true)
            {
                Debug.Log("Waiting for connection.");
                using (TcpClient client = server.AcceptTcpClient())
                {
                    Debug.Log("Connected!");
                    data = null;
                    NetworkStream stream = client.GetStream();
                    int i;

                    // As long as there is something in the stream:
                    while((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        // Translate data bytes to a ASCII string.
                        data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                        Debug.Log(String.Format("Received: {0}", data));

                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

                        // Send back a response.
                        stream.Write(msg, 0, msg.Length);
                        Debug.Log(String.Format("Sent: {0}", data));
                    }
                }
            }

        } catch (SocketException e)
        {
            Debug.LogError(String.Format("SocketException: {0}", e));
        } finally
        {
            server.Stop();
        }
    }

}

Node.js客户端:

var net = require('net');

var HOST = '192.168.1.67';
var PORT = 1234;

var client = new net.Socket();

client.connect(PORT, HOST, function() {
    console.log('Client connected to: ' + HOST + ':' + PORT);
    // Write a message to the socket as soon as the client is connected, the server will receive it as message from the client 
    client.write('Hello World!');

});

client.on('data', function(data) {    
    console.log('Client received: ' + data);
     if (data.toString().endsWith('exit')) {
       client.destroy();
    }
});

// Add a 'close' event handler for the client socket
client.on('close', function() {
    console.log('Client closed');
});

client.on('error', function(err) {
    console.error(err);
});

Node.js服务器:

var net = require('net');


// Configuration parameters
var HOST = '192.168.1.67';
var PORT = 1234;

// Create Server instance 
var server = net.createServer(onClientConnected);

server.listen(PORT, HOST, function() {  
  console.log('server listening on %j', server.address());
});

function onClientConnected(sock) {  
  var remoteAddress = sock.remoteAddress + ':' + sock.remotePort;
  console.log('new client connected: %s', remoteAddress);

  sock.on('data', function(data) {
    console.log('%s Says: %s', remoteAddress, data);
    sock.write(data);
    sock.write(' exit');
  });

  sock.on('close',  function () {
    console.log('connection from %s closed', remoteAddress);
  });

  sock.on('error', function (err) {
    console.log('Connection %s error: %s', remoteAddress, err.message);
  });
};

0 个答案:

没有答案