// addressinfo => TcpClient.Client.RemoteEndPoint // 새로운 연결이 들어왔습니다. public void notifyRegisterSocket(ASSOCKDESC sockdesc, string addressinfo) { Console.WriteLine(sockdesc.managedID + " Connected"); lock (this) { theSessions.Add(sockdesc.managedID, sockdesc); } }
// 소켓연결이 해제되었습니다. public void notifyReleaseSocket(ASSOCKDESC sockdesc, ASSocket socket) { Console.WriteLine(sockdesc.managedID + " Disconnected"); lock (this) { theSessions.Remove(sockdesc.managedID); } sockdesc.theSender.releaseASSOCKDESC(sockdesc); }
public void notifyMessage(ASSOCKDESC sockdesc, int length, byte[] data, int offset) { //lock (this) //{ // 라인피드가 붙어있는 문자열을 WriteLine하면 출력이 제대로 안된다. // 바이트스트림으로 온 유니코드를 유니코드로 다시 맵핑하기 (단지 바이트로 오는것뿐, 코드체계가 바뀐건 아님) string s = System.Text.Encoding.Unicode.GetString(data, offset, length); Console.Write(s); //} }
// connectSocket에 대한 결과 // bSuccess가 false이면 ex가 null이 아닌 개체로 전송됩니다~ public void notifyConnectingResult(int requestID, ASSOCKDESC sockdesc, bool bSuccess, Exception ex) { if (true == bSuccess) { Console.WriteLine("Connected"); sinfo = sockdesc; System.Threading.Interlocked.Increment(ref cnt); } else { Console.WriteLine(ex.Message); } }
public void NotifyMessage(ASSOCKDESC sockdesc, int length, byte[] data, int offset) { //// 에코로써의 기능은 그대로!~ //if( 'q' == data[0] ) // sockdesc.theSender.disconnectSocket(sockdesc); //else // sockdesc.theSender.postingSend(sockdesc, length, data); byte[] buffer = new byte[length]; Array.Copy(data, offset, buffer, 0, length); if ('q' == buffer[0]) { sockdesc.NetSender.DisconnectSocket(sockdesc); } else { sockdesc.NetSender.PostingSend(sockdesc, buffer.Length, buffer); } }
// connectSocket에 대한 결과 // bSuccess가 false이면 ex가 null이 아닌 개체로 전송됩니다~ public void NotifyConnectingResult(int requestID, ASSOCKDESC sockdesc, bool bSuccess, Exception ex) { }