반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

폴크(FOLC)

C# 테크닉 - 통신 Socket ( Client ) 본문

C#, WF, WPF(.NET)/C#, WF, WPF(.NET) 테크닉

C# 테크닉 - 통신 Socket ( Client )

folcjin 2021. 12. 1. 22:55
728x90
반응형

# WPF 사용하는 과정에서 Socket 을 이용해서 TCP/IP 로 데이터를 송/수신
   > Socket 을 직접 만들어서 데이터 Send/Receive
   > Receive 자동으로 발생하는 통신 event 를 이용하여 데이터 연동

# 소스 코드 내용
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

public class ClientSocket

{
   private Socket m_sock_client = null;
   public bool ConnectServer(string ipstr, int port)
   {
      try
      {
         m_sock_client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         IPAddress addr = IPAddress.Parse(ipstr);
         IPEndPoint remoteEP = new IPEndPoint(addr, port);
         m_sock_client.Connect(remoteEP);
         if (m_sock_client.Connected == true)
         {
            Thread t_connect = new Thread(() => DoComm());
            t_connect.Start();
            return true;
         }
      }
      catch
      {
         m_sock_client.Close();
      }
      return false;
}

# Receive 관련 소스 내용 ( 데이터 수신 )
private void DoComm()
{
   try
   {
      byte[] packet = new byte[1024];
      while (true)
      {
         int rev_size = m_sock_client.Receive(packet);
         string msg = Encoding.ASCII.GetString(packet, 0, rev_size);
         Console.WriteLine(msg);
      }
   }
   catch
   {
   }
   finally
   {
      m_sock_client.Close();
   }
}

# 소스 코드 내용 ( 데이터 전송 )
public void SendData(string msg)
{
   byte[] packet = Encoding.ASCII.GetBytes(msg);
   if(m_sock_client != null) m_sock_client.Send(packet);   
}

728x90
반응형
사업자 정보 표시
사업자 등록번호 : -- | TEL : --