이 내용은 TCP/IP 소켓 프로그래밍 C#을 참고 하였습니다.
C#으로 제작된 Tcp Echo 클라이언트 프로그램
Encoding.ASCII 방식을 주의해서 사용한다.
ASCII방식을 사용할 경우 한글이 안되므로 Encoding.Unicode을 사용한다.
C#으로 제작된 Tcp Echo 클라이언트 프로그램
using System;
using System.Text;
using System.IO;
using System.Net.Sockets;
class TcpEchoClient {
static void Main(string[] args) {
if ((args.Length < 2) || (args.Length > 3)) {
throw new ArgumentException("Parameters: <Server> <Word> [<Port>]");
// thorw new ArgumentException();
}
String server = args[0]; // 서버명 혹은 IP 주소
// 입력된 String을 유니코드 형태로 변환한다.
// byte[] byteBuffer = Encoding.ASCII.GetBytes(args[1]);
byte[] byteBuffer = Encoding.Unicode.GetBytes(args[1]);
// 포트 번호가 파라미터로 입력되었는지를 확인, 아닐경우 7로 Default
int servPort = (args.Length == 3) ? Int32.Parse(args[2]) : 7;
TcpClient client = null;
NetworkStream netStream = null;
try {
// 서버의 해당 포트에 접속하는 소켓을 생성한다.
client = new TcpClient(server, servPort);
Console.WriteLine("Connected to server..., sending echo string");
netStream = client.GetStream();
// 인코딩된 스트링을 서버로 전송한다
netStream.Write(byteBuffer, 0, byteBuffer.Length);
Console.WriteLine("Sent {0} bytes to server...", byteBuffer.Length);
int totalBytesRcvd = 0; // 현재까지 수신된 바이트
int bytesRcvd = 0; // 최종 수신 때 수신된 바이트
// 서버로부터 스트링을 다시 읽어 온다.
while (totalBytesRcvd < byteBuffer.Length) {
if ( (bytesRcvd = netStream.Read(byteBuffer, totalBytesRcvd,
byteBuffer.Length - totalBytesRcvd)) == 0) {
Console.WriteLine("Connection closed prematurely.");
break;
}
totalBytesRcvd += bytesRcvd;
}
Encoding.GetEncoding(949);
Console.WriteLine("Received {0} bytes from server: {1}", totalBytesRcvd,
Encoding.Unicode.GetString(byteBuffer, 0, totalBytesRcvd));
// Encoding.ASCII.GetString(byteBuffer, 0, totalBytesRcvd));
} catch (Exception e) {
Console.WriteLine(e.Message);
} finally {
netStream.Close();
client.Close();
}
}
}
Encoding.ASCII 방식을 주의해서 사용한다.
ASCII방식을 사용할 경우 한글이 안되므로 Encoding.Unicode을 사용한다.
'C#' 카테고리의 다른 글
TcpEchoServer 프로그램 (0) | 2006.05.28 |
---|---|
직접 코드로 입력한 간단한 C# 프로그램 (0) | 2006.05.28 |
호스트 정보를 반환하는 프로그램 (0) | 2006.05.26 |
마소의 강좌 (0) | 2006.05.18 |
마이크로 소프트에 있는 MediaPlayer 를 이용한 예제 (0) | 2006.05.16 |