[C#]TCP 에코 서버 클라이언트 예제
--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];
while (true)
{
clientSocket = listenSocket.Accept();
int receiveSize = clientSocket.Receive(receiveBuffer,
512, SocketFlags.None);
//받으믄 보내기
while (receiveSize > 0)
{
string temp = Encoding.Unicode.GetString(receiveBuffer);
string temp2 = temp.Substring(0, receiveSize);
Console.WriteLine(temp2);
clientSocket.Send(receiveBuffer, receiveSize, SocketFlags.None);
receiveBuffer = new byte[512];
receiveSize = clientSocket.Receive(receiveBuffer,
512, SocketFlags.None);
}
clientSocket.Shutdown(SocketShutdown.Both);
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 temp = "";
while (temp != "exit")
{
byte[] sendBuffer;
//입력받아 보내기
temp = Console.ReadLine();
sendBuffer = Encoding.Unicode.GetBytes(temp);
clientSocket.Send(sendBuffer);
byte[] receiveBuffer = new byte[512];
//받아서 화면에 출력
int receiveSize = clientSocket.Receive(receiveBuffer,
512, SocketFlags.None);
Console.WriteLine("날라온 메세지 : {0}",Encoding.Unicode.GetString(receiveBuffer, 0, receiveSize));
}
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
}
}