我成功地将<{1}} 从 Android Studio Java UDP客户端 发送到 Visual Studio C#UDP服务器< / em>,以及从服务器返回客户端的响应。
现在我正在尝试从服务器发送string
而不是Image
响应。所以在客户端按钮单击时,我应该从服务器返回一个Image。没有语法错误,没有奇怪的行为。它没有任何反应,我似乎无法在我的ImageView上看到收到的图像,当我跨过它时,string
是final 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);
}
}
}
答案 0 :(得分:-1)
不是答案,但因为我不能评论yolo
你应该使用TCP,它要好得多。使用UDP,我甚至在400字节时丢失数据。
可能是
serverSocket.Send(dataToSend, 8, sender);
将其更改为
serverSocket.Send(dataToSend, dataToSend.Length, sender);
另外,首先尝试将图像的长度(dataToSend.Length)发送到客户端,然后让客户端使用您发送它的长度来创建一个字节数组。有点像
byte[] buffer = new byte[recievedLengthOfImage]