--TCP 에코서버 스트림으로 주고받기 --
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//네임스페이스 추가
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace TCPEchoServer
{
class Program
{
const int ServerPort = 4576;
static void Main(string[] args)
{
Socket listenSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPEndPoint listenEP = new IPEndPoint(IPAddress.Any, ServerPort);
listenSocket.Bind(listenEP);
listenSocket.Listen(5);
//클라이언트 소켓 선언
Socket clientSocket = null;
//데이터를 받기위한 버퍼 선언
byte[] receiveBuffer = new byte[512];
NetworkStream stream;
StreamReader reader;
StreamWriter writer;
clientSocket = listenSocket.Accept();
//소켓으로부터 스트림 생성
stream = new NetworkStream(clientSocket);
//스트림으로부터 리더 생성
reader = new StreamReader(stream);
//스트림으로부터 Writer 생성
writer = new StreamWriter(stream);
while (true)
{
string readBuf = reader.ReadLine();
//읽어온 데이터가 있으면
if (readBuf != null && readBuf.Length > 0)
{
Console.WriteLine("받음: " + readBuf);
//읽어온 데이터를 다시 전송
writer.WriteLine(readBuf);
writer.Flush();
Console.WriteLine("보냄: " + readBuf);
}
}
writer.Close();
reader.Close();
stream.Close();
clientSocket.Close();
listenSocket.Close();
}
}
}
--TCP 클라이언트 스트림으로 주고받기--
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace TcpEchoClient
{
class Program
{
private const int ServerPort = 4576;
static void Main(string[] args)
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPEndPoint serverEP = new IPEndPoint(IPAddress.Loopback, ServerPort);
clientSocket.Connect(serverEP);
string writeBuf = "";
//소켓으로부터 스트림을 생성
NetworkStream stream = new NetworkStream(clientSocket);
//스트림으로부터 Reader 생성
StreamReader reader = new StreamReader(stream);
//스트림으로부터 Writer 생성
StreamWriter writer = new StreamWriter(stream);
while (writeBuf != "exit")
{
//입력받아 보내기
writeBuf = Console.ReadLine();
writer.WriteLine(writeBuf);
writer.Flush();
Console.WriteLine("보냄 : " + writeBuf);
//서버로부터 데이터를 받는다
string readBuf = reader.ReadLine();
Console.WriteLine("받음 : "+readBuf);
}
stream.Close();
reader.Close();
writer.Close();
clientSocket.Close();
}
}
}
'프로그래밍' 카테고리의 다른 글
DB 인덱싱 초기화 쿼리 (0) | 2009.03.21 |
---|---|
[C#] Stream과 인터페이스를 이용한 간단한 네트워크 설계 (0) | 2009.01.21 |
[C#]TCP 에코 서버 클라이언트 예제 (0) | 2009.01.15 |
[C#]인코딩예제 (0) | 2009.01.15 |
[C#]UDP 기본 에코서버클라이언트 (0) | 2009.01.14 |
댓글