Contents

Develop
2013.04.23 17:33

[c#] 간단한 소켓통신 예제..

조회 수 27220 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
// 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;
    }
  }
}


?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
685 Develop [lego] 세그웨이 이것만 볼것.. ㅎㅎ file hooni 2013.04.23 35144
684 Develop [json] 종결자 (설명과 웹, C/C++/C# 프로그램 샘플 코드) file hooni 2013.04.23 74308
683 Develop [c#] Hashtable <-> Json (dll 포함) file hooni 2013.04.23 82731
682 Develop [c#] Json 라이브러리 (System.Net.Json.dll) file hooni 2013.04.23 59206
681 Develop [c#] 간단한 IPC 통신 예제 hooni 2013.04.23 64300
» Develop [c#] 간단한 소켓통신 예제.. hooni 2013.04.23 27220
679 Develop [c#] 비동기 통신 샘플 코드 ㅎㅎ file hooni 2013.04.23 24178
678 Develop [c#]업글 뉴 툴바 개인적으로 만든거.. (new) ㅋㅋ secret hooni 2013.04.23 7651
677 Develop [c#]뉴 툴바 개인적으로 만든거.. (new) secret hooni 2013.04.23 7724
676 Develop [c#]뉴 툴바 개인적으로 만든거.. (old) secret hooni 2013.04.23 4272
675 Develop 논문에 들어갈 툴바 테스트 해볼 것.. secret hooni 2013.04.23 8013
674 Develop 최근 논문 자료 (2011/01/03, 만현형한테 보낸거..) secret hooni 2013.04.23 10366
Board Pagination Prev 1 ... 37 38 39 40 41 42 43 44 45 46 ... 99 Next
/ 99

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

나눔고딕 사이트로 가기

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5