我使用Unity-webRequest从服务器获取mjpeg流。但它只在本地主机上工作。如果我将服务器移动到同一局域网中的另一台机器上。Unity响应连接被拒绝。
脚本如下。如果url是http://locahost:7777/img
,那没关系。我还尝试了http://127.0.0.1:7777/img
和http://192.168.0.2:7777/img
(本地主机IP(,它们都可以正常工作。但当我在另一台机器http://192.168.0.7:7777/img
上托管服务器时,它会失败。
var webRequest = WebRequest.Create("http://192.168.0.4:7777/img");
webRequest.Method = "GET";
List<byte> frameBuffer = new List<byte>();
int lastByte = 0x00;
bool addToBuffer = false;
BufferedStream buffer = null;
try
{
Stream stream = webRequest.GetResponse().GetResponseStream();
buffer = new BufferedStream(stream);
trackedBuffers.Add(buffer);
}
catch (System.Exception ex)
{
Debug.LogError(ex);
}
我已经使用HTML进行了测试,所有这些都非常有效。
<html>
<body>
<img src="http://localhost:7777/img">
<img src="http://192.168.0.2:7777/img">
<img src="http://192.168.0.4:7777/img">
</img>
</body>
</html>
我遇到了类似的问题,但我的初始条件有些不同,差异可能是相关的。根据WebRequest uri的Unity Scripting API,根据给定路径的启动方式对其进行假设。就我而言,我只是路过"<ipAddress>:<端口>lt;路径>quot;而你正在通过";http://<ipAddress>:<端口>lt;路径>";。在我的情况下,我发现这是在为";http://localhost:"我的路是不正确的。我解决了这个问题,只是用"//"根据文件,这使得Unity只准备";http:";部分如果你已经准备好了";http://";。
TL;DR使用路径格式"//<ipAddress>:<端口>lt;路径>quot;为我解决了同样的问题。