2009. 9. 15. 18:54
A Concern Interest/C#소켓프로그래밍
반응형
TCPClient.Cs |
소스(TcpClientExample.cs) using System; using System.IO; using System.Text; using System.Net; using System.Net.Sockets; class TcpClientTest { static void Main(string[] args) { TcpClient client = null; try { //LocalHost에 지정 포트로 TCP Connection을 생성하고 데이터를 송수신 하기 //위한 스트림을 얻는다. client = new TcpClient(); client.Connect("localhost", 5001); NetworkStream writeStream = client.GetStream(); //보낼 데이터를 읽어 Default 형식의 바이트 스트림으로 변환 string dataToSend = Console.ReadLine(); byte [] data = Encoding.Default.GetBytes (dataToSend); while(true) { dataToSend += "\r\n"; data = Encoding.Default.GetBytes (dataToSend); writeStream.Write(data,0,data.Length); if (dataToSend.IndexOf("<EOF>") > -1) break; dataToSend = Console.ReadLine(); } } catch(Exception ex) { Console.WriteLine(ex.ToString()); } finally { client.Close(); } } } |
TCPServer.Cs |
using System; using System.IO; using System.Text; using System.Net; using System.Net.Sockets; class Server { public static void Main() { NetworkStream stream = null; TcpListener tcpListener = null; StreamReader reader = null; Socket clientsocket = null; try { //IP주소를 나타내는 객체를 생성,TcpListener를 생성시 인자로 사용할려고 IPAddress ipAd = IPAddress.Parse("127.0.0.1"); //TcpListener Class를 이용하여 클라이언트의 연결을 받아 들인다. tcpListener = new TcpListener(ipAd, 5001); tcpListener.Start(); //Client의 접속이 올때 까지 Block 되는 부분, 대개 이부분을 Thread로 만들어 보내 버린다. //백그라운드 Thread에 처리를 맡긴다. clientsocket = tcpListener.AcceptSocket(); //클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다. stream = new NetworkStream(clientsocket); Encoding encode = System.Text.Encoding.GetEncoding("ks_c_5601-1987"); reader = new StreamReader(stream, encode); while(true) { string str = reader.ReadLine(); Console.WriteLine(str); } } catch (Exception e ) { Console.WriteLine(e.ToString()); } finally { clientsocket.Close(); } } } |
반응형
'A Concern Interest > C#소켓프로그래밍' 카테고리의 다른 글
03장 C# Socket 활용 (0) | 2009.09.15 |
---|---|
01장.C# Socket 이란? (0) | 2009.09.15 |