unity threadpool or socket bug?
class Client
{
private Socket socket;
private byte[] buffer = new byte[1024];
private StringBuilder sb = new StringBuilder();
public Client(Socket socket)
{
this.socket = socket;
this.socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new System.AsyncCallback(Receive), this);
//Send("Welcome server!\r\n>");
}
private void Receive(IAsyncResult result)
{
if (socket.Connected)
{
int size = 0;
try
{
this.socket.EndReceive(result);
}
catch (Exception e)
{
UnityEngine.Debug.Log(e.Message);
return;
}
this.socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, Receive, this);
}
}
private void Send(string msg)
{
byte[] data = Encoding.ASCII.GetBytes(msg);
socket.Send(data, data.Length, SocketFlags.None);
}
private void Send(IAsyncResult result)
{
if (socket.Connected)
{
this.socket.EndSend(result);
}
}
}
class ServerSocket : Socket
{
public ServerSocket() : base(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
{
base.Bind(new IPEndPoint(IPAddress.Any, 7902));
base.Listen(0);
BeginAccept(Accept, this);
}
private void Accept(IAsyncResult result)
{
UnityEngine.Debug.Log("ServerSocket threadID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
var client = new Client(EndAccept(result));
BeginAccept(Accept, this);
}
}
public class Test : MonoBehaviour
{
void Start()
{
new ServerSocket();
}
public static void OpenHandler(Network.Session.NetSession session)
{
}
// Update is called once per frame
void Update()
{
}
}
hi. In Unity, AsyncCode such as 'beginAccpet' and 'BeginReceive' was executed. The above code is fine when run as a C# project, not Unity. But when running in Unity, if the socket exceeds 1000, Suddenly, it fails to accept and the number of threads increases, and execution stops. However, if you remove BeginReceive, it runs without any problems in Unity. It like a unity bug, but has anyone ever experienced this phenomenon?
Your answer
Follow this Question
Related Questions
Object Pooling Help 0 Answers
How does endless games work? 0 Answers
How can I do login system with web socket connection. 0 Answers
Cell phone apps. Pooling or instantiate? 1 Answer
Networking with TLAPI between two different projects 0 Answers