'이보다 간단할 순 없다' 서버 만들어보기
public class EntryPoint
{
[STAThread]
static void Main(string[] args)
{
try
{
// Set the TcpListener on port 13000.
Int32 port = 13000;
IPAddress localAddr = IPAddress.Any;
// TcpListener server = new TcpListener(port);
TcpListener server = new TcpListener(localAddr, port);
// Start listening for client requests.
server.Start();
// Enter the listening loop.
while(true)
{
Console.WriteLine("(1) 서버가 클라이언트가 접속하기를 기다린다.......");
// Perform a blocking call to accept requests.
// You could also user server.AcceptSocket() here.
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("(2) 클라이언트가 접속했다!");
// Get a stream object for reading and writing
NetworkStream stream = client.GetStream();
BufferedStream bufferedStream = new BufferedStream(stream);
Console.WriteLine("(3) 서버가 클라이언트에게 32비트 정수의 가장 큰 값을 보낸다. 이때 정수값을 Network-byte order로 전송한다.");
BinaryWriter bw = new BinaryWriter(bufferedStream);
bw.Write( IPAddress.HostToNetworkOrder(int.MaxValue) );
bw.Flush();
Console.WriteLine("Send: " + int.MaxValue);
Console.WriteLine("(6) 서버는 클라이언트에게서 받은 정수값을 출력한다.");
BinaryReader br = new BinaryReader(bufferedStream);
Console.WriteLine("Recv: " + IPAddress.NetworkToHostOrder(br.ReadInt32()));
// Shutdown and end connection
Console.WriteLine("(7) 연결 종료한다.");
client.Close();
}
}
catch(SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
Console.WriteLine("
Hit enter to continue...");
Console.Read();
}
}
'이보다 간단할 순 없다' 클라이언트 만들어보기
class Class1
{
[STAThread]
static void Main(string[] args)
{
try
{
// Set the TcpListener on port 13000.
Int32 port = 13000;
TcpClient client = new TcpClient();
client.Connect("localhost",port);
Console.WriteLine("(2) 클라이언트가 접속했다!");
NetworkStream stream = client.GetStream();
BufferedStream bufferedStream = new BufferedStream(stream);
Console.WriteLine("(4) 클라이언트는 서버에게서 받은 정수값을 출력한다.");
BinaryReader br = new BinaryReader(bufferedStream);
Console.WriteLine("Recv: " + IPAddress.NetworkToHostOrder(br.ReadInt32()));
Console.WriteLine("(5) 클라이언트는 서버에게 32비트 정수의 가장 작은 값을 보낸다. 마찬가지로 Network-byte order byte로 전송한다.");
BinaryWriter bw = new BinaryWriter(bufferedStream);
bw.Write( IPAddress.HostToNetworkOrder(int.MinValue) );
bw.Flush();
Console.WriteLine("Send: " + int.MinValue);
// Shutdown and end connection
Console.WriteLine("(7) 연결 종료한다.");
client.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
Console.Read();
}
}
}
원문 :
http://kaistizen.net/EE/index.php/weblog/comments/practical_csharp_network_004/