ソケットサーバーとして機能する Unity アプリがあります。
public class Server : MonoBehaviour
{
private String outData;
private String inData;
public void writeData(String data){
outData = data;
}
void Start()
{
ThreadStart ts = new ThreadStart(dataHandler);
mThread = new Thread(ts);
mThread.Start();
}
void dataHandler()
{
TcpListener listener = new TcpListener(PORT);
listener.Start();
while (true)
{
var client = listener.AcceptTcpClient();
new Thread(() =>
{
using (client)
{
var reader = new StreamReader(client.GetStream());
var writer = new StreamWriter(client.GetStream());
while (true)
{
inData = reader.ReadLine();
if(outData != null){
writer.WriteLine(outData);
writer.Flush();
outData = null;
}
}
}
}).Start();
}
}
}
私は .NET スレッドに詳しくなく、データを送信する方法がわかりません。データが来ると、ソケット スレッドが起動し、inData フィールドが更新されます。しかし、writeData を呼び出しても何も起こりません。inData が更新されるまで、ソケット スレッドは引き続きスリープ状態になります。