UWP

2016-08-15 6 views
0

내가 클래스UWP

public static async Task SendStringUdpAsync(HostName remoteHost, 
string remotePort, string message) 
    { 


     using (var socket = new DatagramSocket()) 
     { 
      var stream = (await socket.GetOutputStreamAsync(
       remoteHost, remotePort)).AsStreamForWrite(); 
      using (var writer = new StreamWriter(stream)) 
      { 
       await writer.WriteLineAsync(message.ToString()); 
       await writer.FlushAsync(); 
      } 
     } 
    } 

를 보내는 UDP을 돌하지만 그 대신 문자열을 보내 다음, 나는이 UDP에

public class OSCString : IOSCValue<string> 
{ 
    static int PaddingLength = 4; 

    public string Contents { get; } 
    public char TypeTag { get { return 's'; }} 
    public byte[] Bytes { get; } 



    public OSCString(string contents) 
    { 
     Contents = contents; 
     Bytes = GetBytes(); 
    } 

    public byte[] GetBytes() 
    { 
     byte[] bytes = new byte[GetByteLength()]; 
     Encoding.ASCII.GetBytes(Contents, 0, Contents.Length, bytes, 0); 
     return bytes; 
    } 

    public int GetByteLength() 
    { 
     return GetPaddedLength(Contents.Length); 
    } 

    public static int GetPaddedLength(int length) 
    { 
     int terminatedLength = length + 1; 
     int paddedLength = (int)(Math.Ceiling(terminatedLength/(float)PaddingLength) * 4); 
     return paddedLength; 
    } 

    public static OSCString Parse(BinaryReader reader) 
    { 
     List<byte> bytes = new List<byte>(); 
     byte current = reader.ReadByte(); 
     while(current != 0) 
     { 
      bytes.Add(current); 
      current = reader.ReadByte(); 
     } 
     string str = Encoding.ASCII.GetString(bytes.ToArray()); 
     OSCString oscString = new OSCString(str); 
     int bytesToBurn = oscString.Bytes.Length - bytes.Count - 1; 
     for(int i = 0; i < bytesToBurn; i++) 
     { 
      reader.ReadByte(); 
     } 
     return oscString; 
    } 


} 

내가 시도를 사용자 정의 클래스를 보내려면 DataWriter 및 StreamWrite는 너무 잘 작동하지 않습니다.

UWP가 소켓 클래스를 제거하면 Streamwrite가 작업을 수행 할 수 있습니까?

답변

0

내가

이 알아낼
 var socket = new DatagramSocket(); 

     //socket.MessageReceived += SocketOnMessageReceived; 

     using (var stream = await socket.GetOutputStreamAsync(remoteHost, remotePort)) 
     { 
      using (var writer = new DataWriter(stream)) 
      { 
       // var data = Encoding.UTF8.GetBytes(message); 

       writer.WriteBytes(packet.Bytes); 
       writer.StoreAsync(); 
      } 
     } 

모든 위대한 !!!!!!!!! 작동