[.NET, C#] 비동기 네트워크 API

2016. 2. 14. 05:21프로그래밍/C#

728x90
728x90

비동기 네트워크 메서드

System.Net 네임스페이스에 System.Net.Sockets의 Socket 클래스에 정의되어 있다.


MSDN

https://msdn.microsoft.com/library/System.Net.Sockets.Socket_methods(v=vs.110).aspx


AcceptAsync

1
2
3
public bool AcceptAsync(
    SocketAsyncEventArgs e
cs


클라이언트의 연결을 수락한다.


ReceiveAsync

1
2
3
public bool ReceiveAsync(
    SocketAsyncEventArgs e
)
cs


메시지를 수신한다.


SendAsync

1
2
3
public bool SendAsync(
    SocketAsyncEventArgs e
)
cs


메시지를 전송한다.


ConnectAsync

1
2
3
public bool ConnectAsync(
    SocketAsyncEventArgs e
)
cs


서버에 접속을 수행한다.


매개 변수

e

Type: System.Net.Sockets.SocketAsyncEventArgs

The System.Net.Sockets.SocketAsyncEventArgs object to use for this asynchronous socket operation.


반환 값

Type: System.Boolean

Returns true if the I/O operation is pending.The SocketAsyncEventArgs.Completed event 

on the e parameter will be raised upon completion of the operation.

Returns false if the I/O operation completed synchronously.The SocketAsyncEventArgs.

Completed event on the e parameter will not be raised and the e object passed as a parameter 

may be examined immediately after the method call returns to retrieve the result of the operation.


요약하자면 비동기 IO 작업은 true를 리턴하고 작업이 완료 되었을 시 SocketAsyncEventArgs.Completed 이벤트가 발생한다는 것.

동기라면 false를 리턴하고 Completed 이벤트가 발생하지 않고 직접 처리해주어야 한다.


비동기 네트워크 파라메터 SocketAsyncEventArgs

비동기 소켓 작업에 사용되는 클래스이다.

IO 작업을 수행한 뒤 해당 작업이 완료될 때, Completed 이벤트를 통해 작업 완료 통보가 들어간다.

Completed 이벤트에서 호출되는 메서드를 정의해주면 된다.


1
void on_connect_completed(object sender, SocketAsyncArgs e) { ... }
cs


SocketAsyncEventArgs 객체는 비동기 메서드를 호출할 때 파라메터로 넣어줬던 그 객체다.

728x90
반응형

'프로그래밍 > C#' 카테고리의 다른 글

직렬화  (0) 2015.08.03
Delegate  (2) 2015.08.03
데이터 보관하기  (0) 2015.08.03
C#이란?  (0) 2015.08.03
가비지 컬렉션  (0) 2015.07.28
ref와 out 차이  (0) 2015.06.23
처음만드는 C# 기초 입출력  (0) 2015.06.22