为什么我无法在Android Studio中查看我收到的UDP图像?

时间:2016-03-27 20:38:03

标签: java c# android imageview udp

我成功地将<{1}} Android Studio Java UDP客户端 发送到 Visual Studio C#UDP服务器< / em>,以及从服务器返回客户端的响应。

现在我正在尝试从服务器发送string而不是Image响应。所以在客户端按钮单击时,我应该从服务器返回一个Image。没有语法错误,没有奇怪的行为。它没有任何反应,我似乎无法在我的ImageView上看到收到的图像,当我跨过它时,stringfinal Bitmap ReceivedImage

我是否需要转换为null以外的其他内容?这是正确的方法吗?也许别的什么..谁能帮助我指出我的错误?感谢

C#服务器:

Bitmap

Java客户端:点击按钮,此功能被调用发送 - 接收 - 显示

    class UdpServer
{
    static void Main(string[] args)
    {
        byte[] dataReceived = new byte[1024];
        UdpClient serverSocket = new UdpClient(15000);

        string path = "C:\\Users\\kkhalaf\\Desktop\\Capture.PNG"; // image path
        FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); // prepare
        BinaryReader br = new BinaryReader(fs); // prepare
        byte[] dataToSend = br.ReadBytes(Convert.ToInt16(fs.Length)); //Convert image to byte[]

        int i = 0;
        while (true) // this while for keeping the server "listening"
        {
            Console.WriteLine("Waiting for a UDP client..."); // display stuff
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); // prepare
            dataReceived = serverSocket.Receive(ref sender); // receive packet
            string stringData = Encoding.ASCII.GetString(dataReceived, 0, dataReceived.Length); // get string from packet
            Console.WriteLine("Response from " + sender.Address); // display stuff
            Console.WriteLine("Message " + i++ + ": " + stringData + "\n"); // display client's string

            // Here I am sending back
            serverSocket.Send(dataToSend, 8, sender);
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

不是答案,但因为我不能评论yolo

你应该使用TCP,它要好得多。使用UDP,我甚至在400字节时丢失数据。

可能是

serverSocket.Send(dataToSend, 8, sender);

将其更改为

serverSocket.Send(dataToSend, dataToSend.Length, sender);

另外,首先尝试将图像的长度(dataToSend.Length)发送到客户端,然后让客户端使用您发送它的长度来创建一个字节数组。有点像

byte[] buffer = new byte[recievedLengthOfImage]