SlideShare a Scribd company logo
1 of 10
Download to read offline
소스코드, 강의자료 및 동영상 보기는 http://www.topcredu.co.kr, http://ojc.asia 에서 가능 합니다.
7. C# Network 프로그래밍
7-1. 간단한 TCP 클라이언트, 서버
TCP Client & Server 만들기
System.Net.Sockets.TCPClient : TCP 네트웍의 클라이언트 서비스를 제공하고 Socket
클래스를 기본으로 작성 되었다. FTP나 HTTP와 같은 애플리케이션 계층 프로토콜을 개
발하는데 주로 사용 된다.
TCPClient myClient = new TCPClient(“***.***.***.***”, 13);
Stream myStream = myClient.GetStream();
System.Net.Sockets.NetworkStream : Network용 데이터 스트림을 제공한다. 네트웍의
소켓을 통해 데이터를 전송 및 수신하는 표준 닷넷 프레임워크 스트림 방식을 구현한다.
System.Net.Sockets.Socket : 버클리 소켓을 제공한다. 트랜스포트 계층을 지원하며 생
성된 소켓은 Bind() 메소드를 통해 특정한 종단점으로 바운드 되며 Connect 메소드를
통해서 연결이 생성된다. Send(), SendTo() 메소드르 통해 테이터를 소켓으로 전송하며
Receive() 나 ReceiveFrom() 메소드들 통해 소켓으로부터 데이터를 수신한다. 소켓으로
하는 모든 작업이 완료되면 Shutdown() 메소드를 이용해 소켓을 비활성화 한 후 Close()
메소드를 이용해 소켓을 닫는다. 닷넷에서의 소켓은 인터넷의 TcpClient, UdpClient,
WebRequest 그리고 파생된 클래스들의 연결을 맺는데 사용된다.
System.Net.Sockets.TcpListener : TCP 네트웍의 클라이언트 접속을 Listening하며 소켓
클래스를 기반으로 TCP 서비스를 제공하기 위한 서버쪽 클래스이다. FTP, HTTP와 같은
프로토콜을 사용하는 애플리케이션 계층은 TcpListener를 기반으로 작성 될 수 있다.
클라이언트는 서버로 글을 보내기만 하고, 서버는 글을 받아서 출력만 하는 간단한 예제
를 작성해 보자.
[클라이언트]
using System;
using System.IO;
using System.Text;
using System.Net;
using System.Net.Sockets;
class TcpClientTest
{
static void Main(string[] args)
{
TcpClient client = null;
try
{
//LocalHost에 지정 포트로 TCP 연결을 생성하고 데이터를 송수신을
//위한 스트림을 얻는다.
client = new TcpClient();
client.Connect("localhost", 5001);
NetworkStream stream = client.GetStream();
StreamWriter writer = new StreamWriter(stream)
{ AutoFlush = true };
string dataToSend = Console.ReadLine();
while (true)
{
writer.WriteLine(dataToSend);
if (dataToSend.IndexOf("<EOF>") > -1) break;
dataToSend = Console.ReadLine();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
client.Close();
}
}
}
[서버]
using System;
using System.IO;
using System.Text;
using System.Net;
using System.Net.Sockets;
class Server
{
public static void Main()
{
NetworkStream stream = null;
TcpListener tcpListener = null;
Socket clientsocket = null;
StreamReader reader = null;
try
{
//IP주소를 나타내는 객체를 생성,TcpListener를 생성시 인자로 사용할려고
IPAddress ipAd = IPAddress.Parse("127.0.0.1");
//TcpListener Class를 이용하여 클라이언트의 연결을 받아 들인다.
tcpListener = new TcpListener(ipAd, 5001);
tcpListener.Start();
//Client의 접속이 올때까지 블로킹 되는 부분,
//대개 이부분을 Thread로 만들어 보내 버린다.
//백그라운드 Thread에 처리를 맡긴다.
clientsocket = tcpListener.AcceptSocket();
//클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다.
stream = new NetworkStream(clientsocket);
Encoding encode = Encoding.GetEncoding("utf-8");
reader = new StreamReader(stream, encode);
while (true)
{
string str = reader.ReadLine();
Console.WriteLine(str);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
clientsocket.Close();
}
}
}
위의 예제는 Client는 단순히 보내기만 하고 Server는 단순히 받기만 한다. 적절히 수정
하여 Client가 보내는 것을 서버는 화면에 출력하고 Client에 다시 보내는 EchoClient와
EchoServer를 작성 해보자. 이 경우 Client 역시 보내고 받는 부분의 처리가 가능해야
한다.
7-2. EchoClient, EchoServer
[클라이언트]
using System;
using System.IO;
using System.Text;
using System.Net;
using System.Net.Sockets;
class TcpClientTest
{
static void Main(string[] args)
{
TcpClient client = null;
try
{
//LocalHost에 지정 포트로 TCP Connection을 생성하고 데이터를 송수신
하기
//위한 스트림을 얻는다.
client = new TcpClient();
client.Connect("localhost", 5001);
NetworkStream stream = client.GetStream();
Encoding encode = Encoding.GetEncoding("utf-8");
StreamReader reader = new StreamReader(stream, encode);
StreamWriter writer = new StreamWriter(stream, encode)
{ AutoFlush = true };
string dataToSend = Console.ReadLine();
while (true)
{
writer.WriteLine(dataToSend);
String str = reader.ReadLine();
Console.WriteLine(str);
if (dataToSend.IndexOf("<EOF>") > -1) break;
dataToSend = Console.ReadLine();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
client.Close();
}
}
}
[서버]
using System;
using System.IO;
using System.Text;
using System.Net;
using System.Net.Sockets;
class Server
{
public static void Main()
{
NetworkStream stream = null;
TcpListener tcpListener = null;
Socket clientsocket = null;
StreamReader reader = null;
StreamWriter writer = null;
try
{
//IP주소를 나타내는 객체를 생성,TcpListener를 생성시 인자로 사용할려고
IPAddress ipAd = IPAddress.Parse("127.0.0.1");
//TcpListener Class를 이용하여 클라이언트의 연결을 받아 들인다.
tcpListener = new TcpListener(ipAd, 5001);
tcpListener.Start();
//Client의 접속이 올때 까지 Block 되는 부분, 대개 이부분을 Thread로
만들어 보내 버린다.
//백그라운드 Thread에 처리를 맡긴다.
clientsocket = tcpListener.AcceptSocket();
//클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다.
stream = new NetworkStream(clientsocket);
Encoding encode = Encoding.GetEncoding("utf-8");
reader = new StreamReader(stream, encode);
writer = new StreamWriter(stream, encode) { AutoFlush = true };
while (true)
{
string str = reader.ReadLine();
Console.WriteLine(str);
writer.WriteLine(str);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
clientsocket.Close();
}
}
}
[질문] 위의 예제에서 Client를 두 개 이상 만들어서 서버에 접속해보자.
과연 어떤 일이 일어 날까? 그리고 그 해결책은 무엇일까? 아마도 멀티 쓰레드를 이용
하여 블록킹 되는 메소드를 쓰레드로 처리를 해야 할것이다. 직접 실습해 보자..
7-3. MultiThread EchoClient, EchoServer
Client Program은 그대로 두고 서버를 다시 만들자.
using System;
using System.IO;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
class ClientHadler
{
Socket socket = null;
NetworkStream stream = null;
StreamReader reader = null;
StreamWriter writer = null;
public ClientHadler(Socket socket)
{
this.socket = socket;
}
public void chat()
{
//클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다.
stream = new NetworkStream(socket);
Encoding encode = Encoding.GetEncoding("utf-8");
reader = new StreamReader(stream, encode);
writer = new StreamWriter(stream, encode) { AutoFlush = true };
while (true)
{
string str = reader.ReadLine();
Console.WriteLine(str);
writer.WriteLine(str);
}
}
}
class Server
{
public static void Main()
{
TcpListener tcpListener = null;
Socket clientsocket = null;
try
{
//IP주소를 나타내는 객체를 생성,TcpListener를 생성시 인자로 사용할려고
IPAddress ipAd = IPAddress.Parse("127.0.0.1");
//TcpListener Class를 이용하여 클라이언트의 연결을 받아 들인다.
tcpListener = new TcpListener(ipAd, 5001);
tcpListener.Start();
//Client의 접속이 올때 까지 Block 되는 부분, 대개 이부분을 Thread로
만들어 보내 버린다.
//백그라운드 Thread에 처리를 맡긴다.
while (true)
{
clientsocket = tcpListener.AcceptSocket();
ClientHadler cHandler = new ClientHadler(clientsocket);
Thread t = new Thread(new ThreadStart(cHandler.chat));
t.Start();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
clientsocket.Close();
}
}
}
(탑크리에듀 추천 닷넷, C# 과정)

More Related Content

What's hot

Getting started with Redux js
Getting started with Redux jsGetting started with Redux js
Getting started with Redux jsCitrix
 
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Sam Brannen
 
KAP 업종별기술세미나 12년 02월 #01
KAP 업종별기술세미나 12년 02월 #01KAP 업종별기술세미나 12년 02월 #01
KAP 업종별기술세미나 12년 02월 #01chasarang
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Danilo Sousa
 
업종별세미나 금속도금(12월02월)
업종별세미나 금속도금(12월02월)업종별세미나 금속도금(12월02월)
업종별세미나 금속도금(12월02월)topshock1
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
Cucumber presentation
Cucumber presentationCucumber presentation
Cucumber presentationAkhila B
 
린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)영기 김
 
Behavior driven development (bdd)
Behavior driven development (bdd)Behavior driven development (bdd)
Behavior driven development (bdd)Rohit Bisht
 
5 금속도금 세미나 사례발표(동해금속 개선사례)-140213
5 금속도금 세미나 사례발표(동해금속 개선사례)-1402135 금속도금 세미나 사례발표(동해금속 개선사례)-140213
5 금속도금 세미나 사례발표(동해금속 개선사례)-140213Lee SangHun
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유beom kyun choi
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기Yeonhee Kim
 
KAP 업종별기술세미나 13년 09월 #01
KAP 업종별기술세미나 13년 09월 #01KAP 업종별기술세미나 13년 09월 #01
KAP 업종별기술세미나 13년 09월 #01topshock
 
FULL stack -> MEAN stack
FULL stack -> MEAN stackFULL stack -> MEAN stack
FULL stack -> MEAN stackAshok Raj
 

What's hot (19)

Getting started with Redux js
Getting started with Redux jsGetting started with Redux js
Getting started with Redux js
 
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
 
KAP 업종별기술세미나 12년 02월 #01
KAP 업종별기술세미나 12년 02월 #01KAP 업종별기술세미나 12년 02월 #01
KAP 업종별기술세미나 12년 02월 #01
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
Angular 14.pptx
Angular 14.pptxAngular 14.pptx
Angular 14.pptx
 
Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?
 
업종별세미나 금속도금(12월02월)
업종별세미나 금속도금(12월02월)업종별세미나 금속도금(12월02월)
업종별세미나 금속도금(12월02월)
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
Cucumber presentation
Cucumber presentationCucumber presentation
Cucumber presentation
 
린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)린 소프트웨어 개발(Lean software development)
린 소프트웨어 개발(Lean software development)
 
Behavior driven development (bdd)
Behavior driven development (bdd)Behavior driven development (bdd)
Behavior driven development (bdd)
 
5 금속도금 세미나 사례발표(동해금속 개선사례)-140213
5 금속도금 세미나 사례발표(동해금속 개선사례)-1402135 금속도금 세미나 사례발표(동해금속 개선사례)-140213
5 금속도금 세미나 사례발표(동해금속 개선사례)-140213
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기주니어 개발자의 서버 로그 관리 개선기
주니어 개발자의 서버 로그 관리 개선기
 
KAP 업종별기술세미나 13년 09월 #01
KAP 업종별기술세미나 13년 09월 #01KAP 업종별기술세미나 13년 09월 #01
KAP 업종별기술세미나 13년 09월 #01
 
Angular overview
Angular overviewAngular overview
Angular overview
 
Robot framework and selenium2 library
Robot framework and selenium2 libraryRobot framework and selenium2 library
Robot framework and selenium2 library
 
cucumber harpal.pdf
cucumber harpal.pdfcucumber harpal.pdf
cucumber harpal.pdf
 
FULL stack -> MEAN stack
FULL stack -> MEAN stackFULL stack -> MEAN stack
FULL stack -> MEAN stack
 

Viewers also liked

(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌탑크리에듀(구로디지털단지역3번출구 2분거리)
 
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Viewers also liked (17)

(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
(C#,닷넷구조체강좌)구조체 개요 및 간단한 예제_닷넷,C#, WPF, 자마린실무교육
 
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
 
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
오라클 커서(Cursor) 개념 및 오라클 메모리 구조_PL/SQL,오라클커서강좌,SGA, PGA, UGA, Shared Pool, Sha...
 
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...
#36.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_재직자환급교육,실업자교육,국비지원교육, 자바교육,구...
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
 
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#27.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(국비지원학원/재직자교육/실업자교육/IT실무교육_탑크리에듀)#4.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#18.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 

Similar to (C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원

TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디quxn6
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210Yong Joon Moon
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초Yu Yongwoo
 
[NodeJS] - NET 모듈 소개
[NodeJS] - NET 모듈 소개[NodeJS] - NET 모듈 소개
[NodeJS] - NET 모듈 소개문학청년
 
TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편ymtech
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수Yeon Soo Kim
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기흥배 최
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
ChainHero web application hyperledger fabric analysis v 1.0
ChainHero web application hyperledger fabric analysis v 1.0ChainHero web application hyperledger fabric analysis v 1.0
ChainHero web application hyperledger fabric analysis v 1.0병준 김
 
중급 소켓프로그래밍
중급 소켓프로그래밍중급 소켓프로그래밍
중급 소켓프로그래밍quxn6
 
세션1. block chain as a platform
세션1. block chain as a platform세션1. block chain as a platform
세션1. block chain as a platformJay JH Park
 
Icmp Attak Against Tcp
Icmp Attak Against TcpIcmp Attak Against Tcp
Icmp Attak Against Tcpxyzlee
 
Tcp server / client
Tcp server / clientTcp server / client
Tcp server / client문익 장
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVAcooddy
 
Python socket programming
Python socket programmingPython socket programming
Python socket programmingTae Young Lee
 
Blockchain 4th dapp programming
Blockchain 4th dapp programmingBlockchain 4th dapp programming
Blockchain 4th dapp programmingihpark92
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...
AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...
AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...JooHyung Kim
 

Similar to (C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원 (20)

TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디TCP echo 서버 및 클라이언트 예제 스터디
TCP echo 서버 및 클라이언트 예제 스터디
 
파이썬+네트워크 20160210
파이썬+네트워크 20160210파이썬+네트워크 20160210
파이썬+네트워크 20160210
 
리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초리눅스 소켓 프로그래밍 기초
리눅스 소켓 프로그래밍 기초
 
Nodejs_chapter3
Nodejs_chapter3Nodejs_chapter3
Nodejs_chapter3
 
[NodeJS] - NET 모듈 소개
[NodeJS] - NET 모듈 소개[NodeJS] - NET 모듈 소개
[NodeJS] - NET 모듈 소개
 
TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편TR 069 클라이언트 검토자료 3편
TR 069 클라이언트 검토자료 3편
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
ChainHero web application hyperledger fabric analysis v 1.0
ChainHero web application hyperledger fabric analysis v 1.0ChainHero web application hyperledger fabric analysis v 1.0
ChainHero web application hyperledger fabric analysis v 1.0
 
중급 소켓프로그래밍
중급 소켓프로그래밍중급 소켓프로그래밍
중급 소켓프로그래밍
 
세션1. block chain as a platform
세션1. block chain as a platform세션1. block chain as a platform
세션1. block chain as a platform
 
Icmp Attak Against Tcp
Icmp Attak Against TcpIcmp Attak Against Tcp
Icmp Attak Against Tcp
 
Tcp server / client
Tcp server / clientTcp server / client
Tcp server / client
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVA
 
Python socket programming
Python socket programmingPython socket programming
Python socket programming
 
Tcpdump
TcpdumpTcpdump
Tcpdump
 
Blockchain 4th dapp programming
Blockchain 4th dapp programmingBlockchain 4th dapp programming
Blockchain 4th dapp programming
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...
AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...
AWS Community Day 2022 - Nitro Enclave를 이용하여 안전하게 고객 정보 다...
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리)

[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 

(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원

  • 1. 소스코드, 강의자료 및 동영상 보기는 http://www.topcredu.co.kr, http://ojc.asia 에서 가능 합니다. 7. C# Network 프로그래밍 7-1. 간단한 TCP 클라이언트, 서버 TCP Client & Server 만들기 System.Net.Sockets.TCPClient : TCP 네트웍의 클라이언트 서비스를 제공하고 Socket 클래스를 기본으로 작성 되었다. FTP나 HTTP와 같은 애플리케이션 계층 프로토콜을 개 발하는데 주로 사용 된다.
  • 2. TCPClient myClient = new TCPClient(“***.***.***.***”, 13); Stream myStream = myClient.GetStream(); System.Net.Sockets.NetworkStream : Network용 데이터 스트림을 제공한다. 네트웍의 소켓을 통해 데이터를 전송 및 수신하는 표준 닷넷 프레임워크 스트림 방식을 구현한다. System.Net.Sockets.Socket : 버클리 소켓을 제공한다. 트랜스포트 계층을 지원하며 생 성된 소켓은 Bind() 메소드를 통해 특정한 종단점으로 바운드 되며 Connect 메소드를 통해서 연결이 생성된다. Send(), SendTo() 메소드르 통해 테이터를 소켓으로 전송하며 Receive() 나 ReceiveFrom() 메소드들 통해 소켓으로부터 데이터를 수신한다. 소켓으로 하는 모든 작업이 완료되면 Shutdown() 메소드를 이용해 소켓을 비활성화 한 후 Close() 메소드를 이용해 소켓을 닫는다. 닷넷에서의 소켓은 인터넷의 TcpClient, UdpClient, WebRequest 그리고 파생된 클래스들의 연결을 맺는데 사용된다. System.Net.Sockets.TcpListener : TCP 네트웍의 클라이언트 접속을 Listening하며 소켓 클래스를 기반으로 TCP 서비스를 제공하기 위한 서버쪽 클래스이다. FTP, HTTP와 같은 프로토콜을 사용하는 애플리케이션 계층은 TcpListener를 기반으로 작성 될 수 있다. 클라이언트는 서버로 글을 보내기만 하고, 서버는 글을 받아서 출력만 하는 간단한 예제 를 작성해 보자. [클라이언트] using System; using System.IO; using System.Text; using System.Net; using System.Net.Sockets; class TcpClientTest { static void Main(string[] args) { TcpClient client = null; try { //LocalHost에 지정 포트로 TCP 연결을 생성하고 데이터를 송수신을 //위한 스트림을 얻는다. client = new TcpClient();
  • 3. client.Connect("localhost", 5001); NetworkStream stream = client.GetStream(); StreamWriter writer = new StreamWriter(stream) { AutoFlush = true }; string dataToSend = Console.ReadLine(); while (true) { writer.WriteLine(dataToSend); if (dataToSend.IndexOf("<EOF>") > -1) break; dataToSend = Console.ReadLine(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { client.Close(); } } } [서버] using System; using System.IO; using System.Text; using System.Net; using System.Net.Sockets; class Server { public static void Main() {
  • 4. NetworkStream stream = null; TcpListener tcpListener = null; Socket clientsocket = null; StreamReader reader = null; try { //IP주소를 나타내는 객체를 생성,TcpListener를 생성시 인자로 사용할려고 IPAddress ipAd = IPAddress.Parse("127.0.0.1"); //TcpListener Class를 이용하여 클라이언트의 연결을 받아 들인다. tcpListener = new TcpListener(ipAd, 5001); tcpListener.Start(); //Client의 접속이 올때까지 블로킹 되는 부분, //대개 이부분을 Thread로 만들어 보내 버린다. //백그라운드 Thread에 처리를 맡긴다. clientsocket = tcpListener.AcceptSocket(); //클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다. stream = new NetworkStream(clientsocket); Encoding encode = Encoding.GetEncoding("utf-8"); reader = new StreamReader(stream, encode); while (true) { string str = reader.ReadLine(); Console.WriteLine(str); } } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { clientsocket.Close(); }
  • 5. } } 위의 예제는 Client는 단순히 보내기만 하고 Server는 단순히 받기만 한다. 적절히 수정 하여 Client가 보내는 것을 서버는 화면에 출력하고 Client에 다시 보내는 EchoClient와 EchoServer를 작성 해보자. 이 경우 Client 역시 보내고 받는 부분의 처리가 가능해야 한다. 7-2. EchoClient, EchoServer [클라이언트] using System; using System.IO; using System.Text; using System.Net; using System.Net.Sockets; class TcpClientTest { static void Main(string[] args) { TcpClient client = null; try { //LocalHost에 지정 포트로 TCP Connection을 생성하고 데이터를 송수신 하기 //위한 스트림을 얻는다. client = new TcpClient(); client.Connect("localhost", 5001); NetworkStream stream = client.GetStream(); Encoding encode = Encoding.GetEncoding("utf-8"); StreamReader reader = new StreamReader(stream, encode); StreamWriter writer = new StreamWriter(stream, encode) { AutoFlush = true };
  • 6. string dataToSend = Console.ReadLine(); while (true) { writer.WriteLine(dataToSend); String str = reader.ReadLine(); Console.WriteLine(str); if (dataToSend.IndexOf("<EOF>") > -1) break; dataToSend = Console.ReadLine(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { client.Close(); } } } [서버] using System; using System.IO; using System.Text; using System.Net; using System.Net.Sockets; class Server { public static void Main() { NetworkStream stream = null; TcpListener tcpListener = null; Socket clientsocket = null; StreamReader reader = null; StreamWriter writer = null;
  • 7. try { //IP주소를 나타내는 객체를 생성,TcpListener를 생성시 인자로 사용할려고 IPAddress ipAd = IPAddress.Parse("127.0.0.1"); //TcpListener Class를 이용하여 클라이언트의 연결을 받아 들인다. tcpListener = new TcpListener(ipAd, 5001); tcpListener.Start(); //Client의 접속이 올때 까지 Block 되는 부분, 대개 이부분을 Thread로 만들어 보내 버린다. //백그라운드 Thread에 처리를 맡긴다. clientsocket = tcpListener.AcceptSocket(); //클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다. stream = new NetworkStream(clientsocket); Encoding encode = Encoding.GetEncoding("utf-8"); reader = new StreamReader(stream, encode); writer = new StreamWriter(stream, encode) { AutoFlush = true }; while (true) { string str = reader.ReadLine(); Console.WriteLine(str); writer.WriteLine(str); } } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { clientsocket.Close(); } } }
  • 8. [질문] 위의 예제에서 Client를 두 개 이상 만들어서 서버에 접속해보자. 과연 어떤 일이 일어 날까? 그리고 그 해결책은 무엇일까? 아마도 멀티 쓰레드를 이용 하여 블록킹 되는 메소드를 쓰레드로 처리를 해야 할것이다. 직접 실습해 보자.. 7-3. MultiThread EchoClient, EchoServer Client Program은 그대로 두고 서버를 다시 만들자. using System; using System.IO; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; class ClientHadler { Socket socket = null; NetworkStream stream = null; StreamReader reader = null; StreamWriter writer = null; public ClientHadler(Socket socket) { this.socket = socket; } public void chat() { //클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다. stream = new NetworkStream(socket); Encoding encode = Encoding.GetEncoding("utf-8"); reader = new StreamReader(stream, encode); writer = new StreamWriter(stream, encode) { AutoFlush = true };
  • 9. while (true) { string str = reader.ReadLine(); Console.WriteLine(str); writer.WriteLine(str); } } } class Server { public static void Main() { TcpListener tcpListener = null; Socket clientsocket = null; try { //IP주소를 나타내는 객체를 생성,TcpListener를 생성시 인자로 사용할려고 IPAddress ipAd = IPAddress.Parse("127.0.0.1"); //TcpListener Class를 이용하여 클라이언트의 연결을 받아 들인다. tcpListener = new TcpListener(ipAd, 5001); tcpListener.Start(); //Client의 접속이 올때 까지 Block 되는 부분, 대개 이부분을 Thread로 만들어 보내 버린다. //백그라운드 Thread에 처리를 맡긴다. while (true) { clientsocket = tcpListener.AcceptSocket(); ClientHadler cHandler = new ClientHadler(clientsocket); Thread t = new Thread(new ThreadStart(cHandler.chat)); t.Start(); }