네트워크/Socket Progamming

비동기 연결 예제

우대비 2024. 2. 28. 03:43
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class AsynchronousClient
{
    // 서버의 IP 주소와 포트 번호 설정
    private const string SERVER_IP = "127.0.0.1"; // 서버 IP, 실제 환경에 맞게 수정
    private const int SERVER_PORT = 11000;        // 서버 포트, 실제 환경에 맞게 수정

    public static void StartClient()
    {
        // 원격 서버의 엔드포인트 설정
        IPAddress ipAddress = IPAddress.Parse(SERVER_IP);
        IPEndPoint remoteEP = new IPEndPoint(ipAddress, SERVER_PORT);

        // TCP/IP 소켓 생성
        Socket client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

        // 비동기 연결을 위한 SocketAsyncEventArgs 생성 및 설정
        SocketAsyncEventArgs connectArgs = new SocketAsyncEventArgs();
        connectArgs.RemoteEndPoint = remoteEP;
        connectArgs.Completed += new EventHandler<SocketAsyncEventArgs>(ConnectCallback);

        // 비동기적으로 서버에 연결 시도
        client.ConnectAsync(connectArgs);
    }

    private static void ConnectCallback(object sender, SocketAsyncEventArgs e)
    {
        // 연결 성공 여부 확인
        if (e.SocketError == SocketError.Success)
        {
            Console.WriteLine("Socket connected to {0}", e.RemoteEndPoint.ToString());
            // 여기에 데이터 전송 또는 수신에 관련된 추가 작업을 수행할 수 있습니다.
        }
        else
        {
            Console.WriteLine("Unable to connect to server. Error: {0}", e.SocketError.ToString());
        }
    }

    public static void Main(string[] args)
    {
        StartClient();
        // 메인 스레드가 종료되지 않도록 대기
        Console.WriteLine("Press ENTER to continue...");
        Console.ReadLine();
    }
}

이 코드는 클라이언트가 서버에 비동기적으로 연결을 시도하는 과정을 나타냅니다.

StartClient 메서드에서 비동기 연결을 시작하고,

연결이 성공하거나 실패할 때 호출될 ConnectCallback 메서드를 정의합니다.

 

비동기 연결을 위해 Socket.ConnectAsync 메서드와 SocketAsyncEventArgs 객체를 사용합니다.

연결 과정이 완료되면 ConnectCallback 메서드가 자동으로 호출됩니다.

여기서는 연결 성공 여부를 확인하고, 성공적으로 연결되면 서버 엔드포인트 정보를 출력합니다.

LIST

'네트워크 > Socket Progamming' 카테고리의 다른 글

C# Chating  (0) 2024.03.07
C# 비동기 통신  (0) 2024.03.03
Socket Programming의 기본 개념  (0) 2024.02.28
Socket Programming  (0) 2023.05.07
오류 처리  (0) 2023.05.07