티스토리 뷰

Development/C#

헬퍼 클래스

오틸라 2008. 5. 26. 19:15
반응형
- 헬퍼클래스의 장점: 코드의 단순화.....

[TcpClient]

- 클라이언트 소켓프로그램 작업

- 자동 소켓생성..


1. TcpClient newclient = new TcpClient();

newclient.Connect("원격호스트명", 8000); //원격호스트명과 포트번호


2. IPAddress address = Dns.GetHostByName(Dns.GetHostName()).AddressList[0];

IPEndPoint endpoint = new IPEndPoint(address, 10232);

TcpClient newclient = new TcpClient(endpoint);

newclient.Connect("원격호스트명/", 8000);


3. TcpClient newclient = new TcpClient("원격호스트명/", 8000);

NetworkStream stream = newclient.GetStream();

byte[] outbytes = Encoding.ASCII.GetBytes("Testing...");

stream.Write(outbytes, 0, outbytes.Length);


byte[] inbytes = new byte[1024];

stream.Read(inbytes, 0, inbytes.Length);

string instring = Encoding.ASCII.GetString(inbytes);

Console.WriteLine(instring);

stream.Close();

newclient.Close();


[TcpListener]

- 서버측 소켓프로그램 작업

* 생성자

- TcpListener(int port) 특정로컬포트번호에 바인드함.

- TcpListener(IPEndPoint ie) 특정로컬EndPoint에 바인드함.

- TcpListener(IPAddress addr, int port) 특정로컬IPAddress와 포트번호에 바인드함.


TcpListener newserver = new TcpListener(8000);

newserver.Start();  //연결요청을 대기함.

TcpClient newclient = newserver.AcceptTcpClient(); //들어오는 연결요청을  대기,수락함.


NetworkStream stream = newclient.GetStream();

byte[] outbytes = Encoding.ASCII.GetBytes("Testing....");

stream.Write(outbytes, 0, outbytes.Length);


byte[] inbytes = new byte[1024];

stream.Read(inbytes, 0, inbytes.Length);

string instring = Encoding.ASCII.GetString(inbytes);

Console.WriteLine(instring);


stream.Close();

newclient.Close();

newserver.Stop();   //연결종료...


[UdpClient]

- 비연결 소켓작업...

- 특정주소에 바인드하여 데이터를 대기할 필요없슴.


1. UdpClient newconn = new UdpClient(8000);

IPEndPoint remoteclient = new IPEndPoint(IPAddress.Any, 0);


byte[] recv = newconn.Receive(ref remoteclient);

string data = Encoding.ASCII.GetString(recv);    //데이터수집

Console.WriteLine("From: {0}", remoteclient.ToString());

Console.WriteLine(" Data: {0}", data);

newconn.Close();


2. UdpClient newclient = new UdpCient(8000);

IPEndPoint remotehost = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 8000);

byte[] bytes = Encoding.ASCII.GetBytes("Test string...");

newclient.Send(bytes, bytes.Length, remotehost);

newclient.Close();

반응형
댓글