Develop
2013.04.23 17:33
[c#] 간단한 소켓통신 예제..
조회 수 27220 댓글 0
// Server Socket
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | // NameSpace 선언 using System; using System.Net; using System.Net.Sockets; using System.Text; namespace ServerSideSocket { class ServerClass { public static Socket Server , Client; public static byte [] getByte = new byte [1024]; public static byte [] setByte = new byte [1024]; public const int sPort = 5000; [STAThread] static void Main( string [] args) { string stringbyte = null ; IPAddress serverIP = IPAddress.Parse( "127.0.0.1" ); IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort); try { Server= new Socket( AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp); Server.Bind(serverEndPoint); Server.Listen(10); Console.WriteLine( "------------------------" ); Console.WriteLine( "클라이언트의 연결을 기다립니다. " ); Console.WriteLine( "------------------------" ); Client = Server.Accept(); if (Client.Connected) { while ( true ) { Client.Receive(getByte,0,getByte.Length,SocketFlags.None); stringbyte = Encoding.UTF7.GetString(getByte); if (stringbyte != String.Empty) { int getValueLength = 0; getValueLength = byteArrayDefrag(getByte); stringbyte = Encoding.UTF7.GetString( getByte,0,getValueLength+1); Console.WriteLine( "수신데이터:{0} | 길이:{1}" , stringbyte,getValueLength+1); setByte = Encoding.UTF7.GetBytes(stringbyte); Client.Send(setByte,0,setByte.Length,SocketFlags.None); } getByte = new byte [1024]; setByte = new byte [1024]; } } } catch (System.Net.Sockets.SocketException socketEx) { Console.WriteLine( "[Error]:{0}" , socketEx.Message); } catch (System.Exception commonEx) { Console.WriteLine( "[Error]:{0}" , commonEx.Message); } finally { Server.Close(); Client.Close(); } } public static int byteArrayDefrag( byte [] sData) { int endLength = 0; for ( int i = 0; i < sData.Length; i++) { if (( byte )sData[i] != ( byte )0) { endLength = i; } } return endLength; } } } |
// Client Socket
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | using System; using System.Net; using System.Net.Sockets; using System.Text; namespace ClientSideSocket { class ClientClass { public static Socket socket; public static byte [] getbyte = new byte [1024]; public static byte [] setbyte = new byte [1024]; public const int sPort = 5000; [STAThread] static void Main( string [] args) { string sendstring = null ; string getstring = null ; IPAddress serverIP = IPAddress.Parse( "127.0.0.1" ); IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort); socket = new Socket( AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); Console.WriteLine( "------------------------------" ); Console.WriteLine( " 서버로 접속합니다.[엔터를 입력하세요] " ); Console.WriteLine( "------------------------------" ); Console.ReadLine(); socket.Connect(serverEndPoint); if (socket.Connected) { Console.WriteLine( ">>연결 되었습니다.(데이터를 입력하세요)" ); } while ( true ) { Console.Write( ">>" ); sendstring = Console.ReadLine(); if (sendstring != String.Empty) { int getValueLength = 0; setbyte = Encoding.UTF7.GetBytes(sendstring); socket.Send(setbyte,0, setbyte.Length,SocketFlags.None); Console.WriteLine( "송신 데이터 : {0} | 길이{1}" , sendstring, setbyte.Length); socket.Receive(getbyte,0, getbyte.Length,SocketFlags.None); getValueLength = byteArrayDefrag(getbyte); getstring = Encoding.UTF7.GetString(getbyte, 0,getValueLength+1); Console.WriteLine( ">>수신된 데이터 :{0} | 길이{1}" , getstring , getValueLength+1); } getbyte = new byte [1024]; } } public static int byteArrayDefrag( byte [] sData) { int endLength = 0; for ( int i = 0; i < sData.Length; i++) { if (( byte )sData[i] != ( byte )0) { endLength = i; } } return endLength; } } } |
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
685 | Develop |
[lego] 세그웨이 이것만 볼것.. ㅎㅎ
![]() |
hooni | 2013.04.23 | 35144 |
684 | Develop |
[json] 종결자 (설명과 웹, C/C++/C# 프로그램 샘플 코드)
![]() |
hooni | 2013.04.23 | 74308 |
683 | Develop |
[c#] Hashtable <-> Json (dll 포함)
![]() |
hooni | 2013.04.23 | 82731 |
682 | Develop |
[c#] Json 라이브러리 (System.Net.Json.dll)
![]() |
hooni | 2013.04.23 | 59206 |
681 | Develop | [c#] 간단한 IPC 통신 예제 | hooni | 2013.04.23 | 64300 |
» | Develop | [c#] 간단한 소켓통신 예제.. | hooni | 2013.04.23 | 27220 |
679 | Develop |
[c#] 비동기 통신 샘플 코드 ㅎㅎ
![]() |
hooni | 2013.04.23 | 24178 |
678 | Develop |
[c#]업글 뉴 툴바 개인적으로 만든거.. (new) ㅋㅋ
![]() |
hooni | 2013.04.23 | 7651 |
677 | Develop |
[c#]뉴 툴바 개인적으로 만든거.. (new)
![]() |
hooni | 2013.04.23 | 7724 |
676 | Develop |
[c#]뉴 툴바 개인적으로 만든거.. (old)
![]() |
hooni | 2013.04.23 | 4272 |
675 | Develop |
논문에 들어갈 툴바 테스트 해볼 것..
![]() |
hooni | 2013.04.23 | 8013 |
674 | Develop |
최근 논문 자료 (2011/01/03, 만현형한테 보낸거..)
![]() |
hooni | 2013.04.23 | 10366 |