Socket 통신 – 서버를 구축하여 클라이언트와 통신합니다.

7369 단어 C#
*

현재 실례는 단지 하나의 서버가 한 고객에게 일대일로만 완성되었을 뿐, 일대일로 오류가 발생할 수 있으며, 일대다로 연결된 socket 대상을 하나의 집합에 넣어야 한다


* 가져오기.net 및.net.sockets//서버 클래스 만들기, 1.서버 통신, 세 개의 매개 변수 만들기 2.IPEndPoint(ipAddress.parse(string ip),port);//IP 주소와 포트 번호 3.bind 4.듣기listen 5.Accept//클라이언트 요청 수신
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace Demo2048. 
{
    class ServerDemo
    {
        Socket server;
        Socket user;
        bool isCreate;
        public ServerDemo(string ip,int port) {
            server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            try
            {
                server.Bind(new IPEndPoint(IPAddress.Parse(ip), port));
                server.Listen(0);// 0 
                Console.WriteLine(" ");
                isCreate = true;
            }
            catch (Exception e) {
                Console.WriteLine("ip ");
            }

        }
        public void Start() {
            if (!isCreate) {
                Console.WriteLine(" ");
                return;
            }
            user=server.Accept();// 
            Console.WriteLine(" ");
            System.Threading.Thread th = new System.Threading.Thread(Recevie);
            th.Start();
            this.Send();
        }
        public void Recevie() {// 
            while (true) {
                byte[] arr = new byte[1024 * 100];
                int num=user.Receive(arr);
                Console.WriteLine(" :{0}", Encoding.Default.GetString(arr, 0, num));
            }
        }
        public void Send() {// 
            while (true) {
                user.Send(Encoding.Default.GetBytes(Console.ReadLine()));
            }
        }
    }
}
// 
1. , , 
2. 
Class Client{
        Socket client;
        public Client(string ip, int port)
        {
            try
            {
                client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint point = new IPEndPoint(IPAddress.Parse(ip), port);
                client.Connect(point);
                Console.WriteLine(" ");
            }
            catch (FormatException e) {
                Console.WriteLine(" ");
            }
            catch (Exception e)
            {
                Console.WriteLine(" ");
            }
        }
        public void Start(){
            Thread th =new Thread(ReceiveMessage);
            th.Start;
            this.SendMessage();
            }
        public void SendMessage(){
            while(true){
            string value =Console.readLine();
            byte[] data =Encoding.UTf8.GetBytes(value);
            client.Send(data,0,data.length);
            }
            }
          // 
        public void ReceiveMessage()
        {
            try
            {
                while (true)
                {
                    byte[] data = new byte[1024];
                    int num = client.Receive(data);
                    string value = Encoding.UTF8.GetString(data, 0, num);
                    Console.WriteLine(" :" + value);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(" ");
            }
        }
    }
// 
         class Program
         {
               static void Main(string[] args)
               {
                   Client client = new Client("192.168.88.93",8888);
                   client.Start();
                }
         }

“`

좋은 웹페이지 즐겨찾기