HoloLens, UWP 앱이 연결할 수 있도록 서버를 만들어 데이터를 보낼 수 있습니다. UWP 클라이언트 응용 프로그램에서 서버 충돌로 System.Runtime.InteropServices.COMException (0x8007274D)로 데이터 보내기
그래서 서버를 만들기 위해, 나는 비주얼 스튜디오에서 콘솔 응용 프로그램을 작성그리고 클라이언트 측에서 here가, UWP 응용 프로그램, 나는 아래의 클래스를 만든 예 다음 :
using UnityEngine;
#if !UNITY_EDITOR && UNITY_METRO
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using Windows.Networking.Sockets;
using Windows.Storage.Streams;
using Windows.Networking;
using Windows.Foundation;
#endif
public class SendSocketStreamClient {
// The port number for the remote device.
private int port;
private string serverIP;
public SendSocketStreamClient(int portNum, string ip){
port = portNum;
serverIP = ip;
}
#if !UNITY_EDITOR && UNITY_METRO
private StreamSocket networkConnection;
// The response from the remote device.
private static String response = String.Empty;
public void StartClient()
{
// Setup a connection to the server.
HostName networkHost = new HostName(serverIP);
networkConnection = new StreamSocket();
IAsyncAction outstandingAction = networkConnection.ConnectAsync(networkHost, port.ToString());
AsyncActionCompletedHandler aach = new AsyncActionCompletedHandler(NetworkConnectedHandler);
outstandingAction.Completed = aach;
}
public void NetworkConnectedHandler(IAsyncAction asyncInfo, AsyncStatus status)
{
// Status completed is successful.
if (status == AsyncStatus.Completed)
{
DataWriter networkDataWriter;
// Since we are connected, we can send the data we set aside when establishing the connection.
using (networkDataWriter = new DataWriter(networkConnection.OutputStream))
{
networkDataWriter.WriteBytes(Encoding.ASCII.GetBytes("Sending Trial 1"));
// Again, this is an async operation, so we'll set a callback.
DataWriterStoreOperation dswo = networkDataWriter.StoreAsync();
dswo.Completed = new AsyncOperationCompletedHandler<uint>(DataSentHandler);
}
}
else
{
// TODO resend
Debug.Log("Failed to establish connection. Error Code: " + asyncInfo.ErrorCode);
networkConnection.Dispose();
}
}
public void DataSentHandler(IAsyncOperation<uint> operation, AsyncStatus status)
{
if (status == AsyncStatus.Error)
{
// didn't send, so requeue
Debug.Log("Error while sending " + operation.ErrorCode);
}
// Always disconnect here since we will reconnect when sending the next data.
networkConnection.Dispose();
}
#endif
}
I을 다음 C# 스크립트에서이 클래스를 호출하십시오.
#if !UNITY_EDITOR && UNITY_METRO
SendSocketStreamClient newClient = new SendSocketStreamClient(ConnectionPort, ServerIP.Trim());
newClient.StartClient();
#endif
그러나 항상 아래 오류가 발생합니다.
연결을 설정하지 못했습니다. 오류 코드 : System.Runtime.InteropServices.COMException (0x8007274D) : 대상 컴퓨터가 적극적으로 을 거부했기 때문에 연결할 수 없습니다.
내가 무엇을 잘못하고 있는지 또는 어떻게 HoloLens에서 서버로 데이터를 보내고 있는지 알 수 있습니까? 서버에 문제가 있습니까?
----- 편집 ----
는 연결을 설정하지 못했습니다. 오류 코드 : System.Runtime.InteropServices.COMException (0x8007274C) : 연결된 호스트가 응답하지 않아 연결 대상이 일정 시간이 지난 후에 연결된 당사자가 에 제대로 응답하지 않았기 때문에 연결 시도가 실패했기 때문에 연결 시도가 실패했습니다.
서버 IP를 127.0.0.1 대신 내 컴퓨터의 IP 주소로 설정하면 위 오류가 변경됩니다. 그래서 나는 그것이 올바른 IP 주소를주는 것이이 오류를 해결했다고 생각하지만 지금은 서버에 연결하지 않습니다.
내가 서버를 만든 방식이 옳지 않다는 뜻입니까?
모든 UWP 응용 프로그램의 제한 사항으로 인해 localhost (또는 127.0.0.1) 문제가 발생합니다. https://stackoverflow.com/a/33263253/2259391. http://www.telerik.com/fiddler가 디버깅에 도움이 될 수 있습니다 (루프백이 가능한 도구가 내장되어 있습니다) –
링크를 제공해 주셔서 감사합니다. 나는 이미 문제를 발견했다. =) –