C# Tcp/ip 예제

Tesless·2023년 8월 7일
0

Server 예제

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace TcpServerExample
{
    class TCPServerExample
    {
        static void Main(string[] args)
        {
            // 서버 IP 주소와 포트 설정
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 7000);
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // 서버 소켓에 IP 주소와 포트 바인딩
            server.Bind(ipep);
            server.Listen(1); // 서버 연결 요청 최대 개수 설정

            Console.WriteLine("서버 시작... 클라이언트 접속 대기 중...");

            // 클라이언트의 접속 대기
            Socket client = server.Accept();

            // 접속한 클라이언트의 IP 주소와 포트 번호 출력
            IPEndPoint ip = (IPEndPoint)client.RemoteEndPoint;
            Console.WriteLine("{0} 주소, {1} 포트로 접속됨", ip.Address, ip.Port);

            byte[] data = Encoding.Default.GetBytes("환영합니다. *^^*");

            // 클라이언트에게 문자열 전송
            client.Send(data, data.Length, SocketFlags.None);

            data = new byte[1024];

            // 수신한 데이터가 있으면 화면에 출력
            if (client.Receive(data) != 0)
                Console.WriteLine("수신 메시지: " + Encoding.Default.GetString(data));
            else
                Console.WriteLine("수신 데이터 없음...");

            // 클라이언트 소켓 연결 종료
            client.Close();

            // 서버 소켓 종료
            server.Close();
            Console.ReadLine();
        }
    }
}

Client 예제

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace TcpClientExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 서버의 IP 주소와 포트 설정
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7000);

            // 클라이언트 소켓 생성 및 서버에 연결 시도
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            server.Connect(ipep); // 127.0.0.1 서버의 7000번 포트에 접속 시도

            Console.WriteLine("서버에 접속..."); // 서버 접속 성공 시 메시지 출력

            byte[] data = new byte[1024];

            // 서버로부터 데이터 수신 및 읽기
            server.Receive(data);
            Console.WriteLine("수신 데이터: " + Encoding.Default.GetString(data));

            // 서버로 데이터 전송
            server.Send(Encoding.Default.GetBytes("데이터 전송..."));

            // 소켓 연결 종료
            server.Close();
            Console.ReadLine();
        }
    }
}
profile
Juinor Developer

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

정보 감사합니다.

답글 달기
Powered by GraphCDN, the GraphQL CDN