2014-01-19 25 views
1

我想從我的電腦發送運動JPEG到Windows Phone電話與全球ip 89.232.123.122。如何建立與該手機的連接並通過連接推送mjpeg?如何通過互聯網發送運動JPEG到Windows手機通過TCP

+1

全球IP 344.232.123.122不存在。 – Inspired

+0

@Inspired這就是例子。我糾正了它。 –

+0

請說明你有什麼特別的問題。誰是發起方,電話或服務器?服務器是否知道手機的IP地址?你可以從服務器連接到手機嗎?應用程序在手機上收聽嗎?你知道如何從服務器上讀取文件,並且你有一個協議將文件傳送到手機嗎?你知道如何在手機上播放這種視頻格式嗎? – CodeCaster

回答

0

ü必須具備Web服務,並上傳你的照片到Web服務,並將其保存在服務器或數據庫中,但我建議將其保存在服務器...

在Web服務:

[WebMethod] 
    public string UploadFile(byte[] f, string fileName) 
    { 
     try 
     { 
      MemoryStream ms = new MemoryStream(f); 
      FileStream fs = new FileStream 
       (System.Web.Hosting.HostingEnvironment.MapPath("~/ArchiveImages/") + 
       fileName, FileMode.Create); 
      ms.WriteTo(fs); 
      ms.Close(); 
      fs.Close(); 
      fs.Dispose(); 

      return "ok"; 
     } 
     catch (Exception ex) 
     { 
      return ex.Message.ToString(); 
     } 
    } 

和在客戶端應用程序中:

private void UploadFile(string filename) 
    { 
     try 
     { 
      ArchiveServiceObj.ArchiveServiceSoapClient srv = new ArchiveServiceObj.ArchiveServiceSoapClient(); 

      MemoryStream stream = new MemoryStream(); 
      picscannedimage.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); 
      byte[] pic = stream.ToArray(); 
      string sTmp = srv.UploadFile(pic, filename + ".jpg"); 
      MessageBox.Show("File Upload Status: " + sTmp, "File Upload"); 

     } 
     catch (Exception ex) 
     { 

      MessageBox.Show(ex.Message.ToString(), "Upload Error"); 
     } 
    } 
+0

通過web服務你的意思是'類WebService'?你能舉個例子嗎?我的電腦將是服務器,所有數據都在'C:\ Video \ example.mjpeg'上。 –

+0

我會寫信給你 – moa7amed

1

用於發送多媒體(如運動JPEG)使用UDP而不是TCP。

在發送端使用

驗證碼:

UdpClient sendFrame = new UdpClient(); 
    // your image is img: 
    Bitmap img = new Bitmap("pic.png"); 


    // always send image 
    while (true) 
       { 
     MemoryStream memory_Stream = new MemoryStream(); 
     // convert bitmap to jpg 
     SaveJPG100(img, memory_Stream); 

     byte[] byte_Of_Frame = memory_Stream.ToArray(); 
    // send data on port 2000 on remote host 
    sendFrame.Send(byte_Of_Frame, byte_Of_Frame.Length,"89.232.123.122",2000); 

       } 

//轉換BTM在接收機端使用JPG

public void SaveJPG100(Bitmap bmp, System.IO.Stream stream) 
{ 

    EncoderParameters encoderParameters = new EncoderParameters(1); 
    encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); 
    bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters); 
} 

// generate jpg description 
public ImageCodecInfo GetEncoder(ImageFormat format) 
{ 

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); 

    foreach (ImageCodecInfo codec in codecs) 
    { 
     if (codec.FormatID == format.Guid) 
     { 
      return codec; 
     } 
    } 
    return null; 
} 

這個代碼

  UdpClient receiveFrame = new UdpClient(2000); 
      // recieve data from any ip address and any port 
      IPEndPoint remote = new IPEndPoint(IPAddress.ANY, 0); 

      while (true) 
      { 

       byte[] byte_Of_Frame = receiveFrame.Receive(ref remote); 
       MemoryStream ms = new MemoryStream(byte_Of_Frame); 

       pictureBox1.Image=(new Bitmap(ms)); 
      } 
+0

太好了,謝謝。儘管這是UDP使用而不是TCP的例子,所以不能保證數據會到達手機。我需要使用TCP協議來確保它們之間的連接已經建立(也將有授權)。 –