using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ToyServer
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
//TCP Echo Server
//1. 종단점
IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint endPoint = new IPEndPoint(ip,5000);
//2. 수신 소켓
Socket listenSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//3. 바인드
listenSocket.Bind(endPoint);
listenSocket.Listen(5);
//4. 접속 대기
Console.WriteLine("클라이언트의 연결을 기다리는 중입니다.");
Socket clientSocket = listenSocket.Accept();
Console.WriteLine("클라이언트와 연결 성공");
try
{
while(true)
{
Console.WriteLine("상대방 종점값 : "+clientSocket.RemoteEndPoint.ToString());
Console.WriteLine("자신의 종점값 : "+clientSocket.LocalEndPoint.ToString());
//5. 데이터 수신
Console.WriteLine("클라이언트 문자열을 기다리는중..");
byte[] receiveBuffer = new byte[512];
int length = clientSocket.Receive(receiveBuffer,receiveBuffer.Length,SocketFlags.None);
//6. 디코딩
string result = Encoding.UTF8.GetString(receiveBuffer,0,length);
Console.WriteLine("클라이언트가 보낸 문자열 : " + result);
//7. 에코
Console.WriteLine("문자열을 에코시킵니다.");
byte[] sendBuffer = Encoding.UTF8.GetBytes(result);
clientSocket.Send(sendBuffer,0,sendBuffer.Length,SocketFlags.None);
}
}
catch
{
Console.WriteLine("===============================");
Console.WriteLine("클라이언트가 접속을 끊었습니다.");
Console.WriteLine("===============================");
}
}
}
}
'네트워크' 카테고리의 다른 글
c# 비동기 방식의 콜백함수 (0) | 2013.05.14 |
---|---|
C# 비동기 클라이언트 소켓서버 (0) | 2013.05.14 |
C# TCP 소켓통신 (0) | 2013.04.25 |
SuperSocket (0) | 2013.04.25 |
C# 비동기 소켓 (Asynchronous Socket) 방식 간단한 채팅 서버 & 클라이언트 (0) | 2013.04.24 |