본문 바로가기

C#

[C#] Socket 클라이언트 Socket 클래스.NET Framework에서 Socket 클래스는 가장 Low 레벨의 클래스로서 TcpClient, TcpListener, UdpClient 들은 모두 Socket 클래스를 이용하여 작성되었다. TcpClient, TcpListener, UdpClient 들이 모두 TCP/IP와 UDP/IP 프로토콜 만을 지원하는 반면, Socket 클래스는 IP 뿐만 아니라 AppleTalk, IPX, Netbios, SNA 등 다양한 네트워크들에 대해 사용될 수도 있다. 여기서는 Socket 클래스를 사용하여 TCP, UDP 네트워크를 사용하는 부분에 대해 살펴 본다. Socket 클라이언트Socket 클래스는 클라이언트와 서버에서 공히 사용할 수 있다. 먼저 Socket 클래스를 사용하여 TCP.. 더보기
[C#] 네트워크 프로그래밍 .NET에 기반한 TCP/IP와 UDP 프로그래밍을 중점적으로 다룸 네트워크 모델네트워크의 세부 기능들을 매우 복잡하고 다양하기 때문에, 이를 체계적으로 분류한 개념적인 모델을 만들었는데 이를 네트워크 모델이라 한다. 테크워크 모델중 가장 대표적인 모델은 2가지인데, 전통적인 네트워크 모델인 OSI 7 Layer 모델과 OSI Layer를 단순화한 TCP/IP 모델이 있다. 네트워크 모델은 각 Layer가 해야하는 역할을 구분하고 있는데 비유하자면 상품을 주문받아 고객에게 발송하는데, 주문받는 사람 따로 있고, 주문 내용대로 박스에 넣는 사람 따로 있고, 고객 주소 레이블 붙이는 사람 따로 있고, 박스에 적힌 주소대로 배달만 하는 사람 따로 있는 것과 비슷한 구조 OSI 7 Layer 모델은 네트워킹의 .. 더보기
[C#] TCP 포트 사용중인지 체크 TCP 포트가 사용 중인지 체크하기TCP/IP 포트가 사용 중인지 체크하기 위해서는 System.Net.NetworkInfomation 네임스페이스에 있는 IPGlobalProperties 클래스를 사용한다. IPGlobalProperties 클래스는 로컬 컴퓨터의 네트워크 연결과 관련된 다양한 정보를 제공해 주는 클래스이다. IPGlobalProperties 클래스의 여러 멤버 중 TCP 포트가 사용 중인지 체크하기 위해 사용하는 메서드는 다음 두가지이다. GetActiveTcpConnections() : 이 메서드는 Listening 상태를 제외한 모든 TCP Connection들을 리턴한다. 즉 포트가 사용되고 있거나 대기 중이거나 또는 닫히고 있거나 닫힌 상태의 모든 TCP 연결 정보들을 리턴한다.. 더보기
[C#] 비동기 TCP 서버 비동기 TCP 서버이전 아티클에서 예를 든 TCP 서버는 동기적 TCP 서버로서 이는 동시에 여러 클라이언트들이 접속했을 때, 순차적으로 하나씩 처리해야 하는 단점이 있다. 따라서, 다중 클라이언트 접속을 핸들링하기 위해서는 TCP 서버를 비동기로 만들 필요가 있다. TCP 서버를 비동기로 만드는 방법은 크게 두가지로 분류할 수 있는데, 고전적인 APM(Asynchronous Programming Model) 방식과 요즘 많이 사용되는 TAP(Task-based Asynchronous Pattern) 방식이 있다. APM 방식은 BeginAcceptTcpClient() / EndAcceptTcpClient() 와 같이 Begin* / End* 2개의 메서드를 쌍으로 사용하는 방식으로 Backward Co.. 더보기
[C#] TCP 화면 전송 예제 TCP 클라이언트 / 서버 샘플이번 아티클에서는 TCP 클라이언트와 TCP 서버가 서로 통신하는 간단한 샘플을 소개. 이 샘플은 TCP 클라이언트가 화면 캡처해서 TCP 서버로 전송하는 예제. 간단한 예시를 위한 것으로 복잡한 프로토콜을 사용하지는 않았으며, 가장 단순하게 처음 전송 바이트수를 보내고 다음으로 실제 바이트들을 전송하게 됨. 또한, 가능한 한 단순하게 핵심 기능만 포커스하기 위해 에러 체킹 및 부수적인 코드 등은 생략함 TCP 클라이언트 예제TCP 클라이언트는 스크린 캡처한 Bitmap 이미지를 바이트 배열로 변환하여 이를 TCP 서버 127.0.0.1:7000으로 전송하는 일을 한다. 전송을 위해 먼저 이미지의 총 바이트수를 전단하여 서버가 얼마만큼의 데이터를 받을지 알게하고, 이후 실제.. 더보기
[C#] TCP 클라이언트 클래스와 사용법 TcpClient 클래스.NET Framework에서 TCP 클라이언트 프로그램을 개발하기 위해서는 System.Net.Sockets.TcpClient 클래스를 사용할 수 있다. TcpClient 클래스는 내부적으로 System.Net.Sockets.Socket 클래스 기능들을 사용하여 TCP 기능을 구현하고 있다. TCP는 기본적으로 IP와 포트를 필요로 하는데, IP가 호스트까지 연결하는데 비해 TCP는 호스트내 포트까지 연결하여 해당 포트에서 기다리고 응용프로그램까지 도달한다.  TcpClient 사용법TcpClient 클래스를 어떻게 사용하는지 살펴보기 위해 아주 단순화된 예제를 살펴보자. 아래 예제는 간단한 메시지를 TCP 서버에 보내고 응답을 읽어 화면에 표시하는 간단한 프로그램이다. usin.. 더보기
[C#] TCP 서버 TcpListener 클래스와 사용법(예제) TCP 서버 TcpListnener 클래스.NET Framework에서 TCP 서버 프로그램을 개발하기 위해 System.Net.Sockets.TcpListener 클래스를 사용TcpListener 클래스 : 내부적으로 System.Net.Sockets.Socket 클래스 기능들을 사용하여 TCP Port Listening 기능을 구현하고 있음TCP 서버 : TcpListener 클래스를 통해 포트를 열고 TcpListener.AcceptTcpClient() 메서드를 통해 클라이언트 접속을 대기하고 있다가 접속 요청 오면 이를 받아들여 TcpClient 객체를 생성하여 리턴함이후 서버의 TcpClient 객체가 클라이언트와 직접 네트워크 스트림을 통해 통신하게됨 TcpListener 사용법TcpListe.. 더보기
[C#] 네트워크, TCP 클래스 라이브러리 이용시 Web 등의 고도 네트워크 서비스를 간단히 이용할 수 있음 클라이언트(client) : 네트워크 통해 어떠한 서비스를 요구하는 컴퓨터나 소프트웨어서버(server) : 이 요구를 기다리며 서비스를 제공하는 측 서버가 클라이언트로부터 접속을 기다림클라이언트가 접속시 문자열 송수신하는 서비스가 이뤄짐   서버를 작성한다using System;using System.IO;using System.Net;using System.Net.Sockets;class Sample45{ public static string HOST = "localhost"; public static int PORT = 10000; //대기하는 포트 번호 지정 public static void Main().. 더보기