C# 클라이언트 TCP Network Class
C#/Tip :
2010. 8. 3. 23:04
항상 tcp 클라이언트 만들때마다 코딩하려니깐 너무 너무 귀찮아서..
그냥 이거를 빼대로 만들려고 올립니다.
코드가 잘짜여졌거나 좋은건지는 전혀 모르겠고요..
필요할때 가져가서 고쳐서 쓸려고 합니다...
class Network { private Socket sock; private MainApp app; private Thread NetworkThread; private delegate void ExceptionCallback(string msg); public Network(MainApp app) { this.app = app; } public bool Connect() { bool isConnect = true; if (sock != null) sock.Close(); sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); while (true) { try { IPAddress svrIp = IPAddress.Parse("127.0.0.1"); IPEndPoint ipep = new IPEndPoint(svrIp, 9507); sock.Connect(ipep); if (sock.Connected) { isConnect = true; break; } } catch (SocketException ex) { isConnect = false; app.ExceptionWrite("서버와 연결을 실패. 재접속 실행함."); } } app.ExceptionWrite("서버와 연결 됨."); return isConnect; } public void Receive() { while (true) { Thread.Sleep(500); byte[] data = new byte[2048]; try { long startTicks = DateTime.Now.Ticks; int size = sock.Receive(data); if (size <= 0) { Connect(); } else app.ConvertData(Encoding.Default.GetString(data, 0, size)); TimeSpan workticks = new TimeSpan(DateTime.Now.Ticks - startTicks); app.ExceptionWrite("서버로부터 받은 데이터 : " + size + "Byte / 걸린시간 : " + workticks.TotalSeconds + "초"); } catch (SocketException ex) { app.ExceptionWrite(ex.Message); Connect(); } } } public void ThreadStart() { NetworkThread = new Thread(new ThreadStart(Receive)); NetworkThread.Start(); } public void ThreadAbort() { if (NetworkThread != null) NetworkThread.Abort(); if (sock.Connected) sock.Close(); } }
'C# > Tip' 카테고리의 다른 글
C# 네트워크(Network) TCP 서버 만들어보기 (0) | 2010.08.14 |
---|---|
C# SQLITE API (0) | 2010.08.12 |
C# 폼간 데이터 전송(부모 자식간 데이터 전송) (4) | 2010.04.02 |
C# 형변환시 변환유무 확인하기 (0) | 2010.03.26 |
c# 네트워크프로그래밍 기초... (0) | 2009.12.30 |