180bpm

Unity3d iOS에서 비동기 소켓 사용시 자꾸 끊어져 버린다면 본문

Develop/Unity

Unity3d iOS에서 비동기 소켓 사용시 자꾸 끊어져 버린다면

powdersnow 2016. 12. 28. 16:55

Win, AOS, mac에서는 잘 되는데 iOS에서만 채팅이 계속 안되는 증상이 있었다.


reciveCallback 처리하는부분을 예외처리로 감싸면 (try-catch)

socket.EndReceive 호출하는 시점에서 " operation on non-blocking socket would block " 이런 경고가 나오고

sokect.connected 의 값을 찍어보면 false로 떨어진다.


socket의 blocking 속성을 true로도 둬보고, 코드를 처음부터 다시 짜보고 했는데도 해결이 안되더라.

1주일 넘게 계속 같은문제로 씨름하니 머리털이 빠질 지경.


어제는 너무 해결이 안되서 페북에 질문을 올렸는데..

유니티 경쟁사인 EPIC의 신과장님이 알려주신 링크덕분에 해결

페북으로도 감사드렸지만 여기서도 다시 굽신굽신..


https://forum.unity3d.com/threads/unity-5-1-1f1-asynchronous-sockets-always-disconnect-when-recieved-messages.341510/

// ============= Socket Create ================= m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000); //m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);


소켓에 send/recv 타임아웃을 빼버림.

링크에서는 5.3.0 b2에서 해결했다고 답변을 줬는데 5.3.4 f1에서 동일한 문제 발생함.



아..죽는줄 알았다.

저 2줄때문에 1주일내내 고생했다니 ㅠㅠ

Comments