有人能告诉我如何在我的代码中暂停接收数据流吗? 目前,我的脚本(见下文)能够: - 等待数据 - 一旦数据从第三方软件流式传输,就读取数据(TCP协议)
- >我一直坚持如何在我收到一个字符(我的例子中为'a'或'b')时实现代码暂停数据流的方式。我听说过使用缓冲区我是非常新的实现这种类型的protocole。
我的最终目标是有一个循环,第三方软件使用TCP协议向UNITY发送“a”或“b”,然后UNITY接收“a”或“b”,并更新对象的颜色基于这个角色。
感谢您的帮助,
的Yannick
// Initialization of the script
void Start()
{
_renderer = GetComponent();
listener = new TcpListener(55001);
listener.Start();
print("is listening");
}
void Update()
{
if (!listener.Pending())
{ }
else
{
print("socket comes");
TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
StreamReader reader = new StreamReader(ns);
coherence = reader.ReadToEnd();
print(coherence);
}
if (coherence == "a")
{
colorFin = Color.green;
}
else if (coherence == "b")
{
colorFin = Color.yellow;
}
}
答案 0 :(得分:0)
我没有尝试过,但我认为这样的事情应该有效:
...
else
{
print("socket comes");
TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
StreamReader reader = new StreamReader(ns);
while (true)
{
char coherence = (char)reader.Read());
print(coherence);
//... handle colors and whatever you want...
}
}
因为StreamReader.Read一次只能读取一个字符。
您可能需要一些逻辑来执行任务或线程中的工作,并处理不正确的接收数据。但我认为这不属于这个问题的范围。