C# 5.0 + .NetFramework 4.5에서 기존 Socket이 아닌 TcpClient의 NetworkStream 타입에 async/await 메서드가 추가되었다.
[C#] TCP Socket을 이용한 통신 (tistory.com)
[C#] TCP Socket을 이용한 통신
TCP 참고 : TCP - 나무위키 (namu.wiki) TCP - 나무위키 TCP는 전화를 거는 것처럼 상대와 연결을 설정하고 통신을 시작한다. 절차는 아래와 같다. Three Way Handshake 1) 상대에게 통신을 하고 싶다는 메시지
jcoder1.tistory.com
위 방법을 비동기로 바꿔본다.
참고 MSDN : TcpListener 클래스 (System.Net.Sockets) | Microsoft Docs
TcpListener 클래스 (System.Net.Sockets)
TCP 네트워크 클라이언트에서 연결을 수신합니다.Listens for connections from TCP network clients.
docs.microsoft.com
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Tcp Listener Server");
TcpListener tcpListener = new TcpListener(IPAddress.Any, 9999);
tcpListener.Start();
while (true)
{
var client = tcpListener.AcceptTcpClient();
PrograssTcpClient(client);
}
}
private static async void PrograssTcpClient(TcpClient tcpClient)
{
using (NetworkStream ns = tcpClient.GetStream())
{
byte[] buffer = new byte[1024];
int nRecv = await ns.ReadAsync(buffer, 0, buffer.Length);
string text = Encoding.UTF8.GetString(buffer, 0, nRecv);
Console.WriteLine(text);
byte[] sendBuffer = Encoding.UTF8.GetBytes("Hello: " + text);
await ns.WriteAsync(sendBuffer, 0, sendBuffer.Length);
ns.Close();
}
}
}
'C#' 카테고리의 다른 글
[C#] 카카오페이지 크롤링 (0) | 2021.01.01 |
---|---|
[C#] gRPC 와 LiteDB 사용 (0) | 2020.12.15 |
[C#] UDP Socket을 이용한 통신 (2) | 2020.12.04 |
[C#] TCP Socket을 이용한 통신 (0) | 2020.12.04 |
[C#] 8.0 고성능이 필요한 환경에서 GC가 발생하지 않는 네이티브 힙 사용 (0) | 2020.12.01 |