class에대한 간단한 테스트

using System;

public class tp {
public tp() {
Console.WriteLine("tp Class Start... ");
}

public void me(int i, string str) {
Console.WriteLine("i Value : " + i + " String Value : " + str);
}

~tp() {
Console.WriteLine("tp Class Close... ");
}
}

public class nano {
public static void Main() {
tp ko = new tp();

ko.me(10,"Test");
}
}


이 내용은 TCP/IP 소켓 프로그래밍 C#을 참고 하였습니다.

.NET 기반의 Socket 클래스를 이용한 Echo Client 프로그램


// --------------------------
// TcpEchoClientSocket.cs
// --------------------------

using System;
using System.Text;
using System.IO;
using System.Net.Sockets;
using System.Net;

class TcpEchoClientSocket {
static void Main(string[] args) {
if ((args.Length < 2) || (args.Length > 3)) { // 파라미터 갯수 확인
throw new ArgumentException("Parameters: <Sever> <Word> [<Port>]");
}

String server = args[0]; // 호스트명 또는 IP

// 입력된 String 객체를 byte로 변환
byte[] byteBuffer = Encoding.Unicode.GetBytes(args[1]);

// Port입력하면 값으로 없으면 Default 7로
int servPort = (args.Length == 3) ? Int32.Parse(args[2]) : 7;

Socket sock = null;

try {
// TCP socket 인스턴트 생성
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);

// 서버 IPEndPoint 인스턴스 생성
// Resolve() 메소드가 한개 이상의 IP를 반환한다.
IPEndPoint serverEndPoint = new IPEndPoint(Dns.GetHostEntry(server).AddressList[0],
servPort);

// 서버의 해당 포트에 소켓을 연결한다.
sock.Connect(serverEndPoint);
Console.WriteLine("Connect to Server ... sending echo string");

// 인코딩된 스트링을 서버로 전송
sock.Send(byteBuffer, 0, byteBuffer.Length, SocketFlags.None);

Console.WriteLine("Sent {0} bytes to server...", byteBuffer.Length);

int totalBytesRcvd = 0;
int bytesRcvd = 0;

// 서버로부터 스트링을 다시 읽는다.
while (totalBytesRcvd < byteBuffer.Length) {
if ((bytesRcvd = sock.Receive(byteBuffer, totalBytesRcvd,
byteBuffer.Length - totalBytesRcvd, SocketFlags.None)) == 0) {

Console.WriteLine("Connection closed prematurely.");
break;
}
totalBytesRcvd += bytesRcvd;
}

Console.WriteLine("Received {0} bytes from server: {1}", totalBytesRcvd,
Encoding.Unicode.GetString(byteBuffer, 0, totalBytesRcvd) );
} catch (Exception e) {
Console.WriteLine(e.Message);
} finally {
sock.Close();
}
}
}


'C#' 카테고리의 다른 글

GUI방식으로 구성한 EchoClient  (0) 2006.05.30
간단한 Class 테스트  (0) 2006.05.29
TcpEchoServer 프로그램  (0) 2006.05.28
직접 코드로 입력한 간단한 C# 프로그램  (0) 2006.05.28
TcpEchoClient 프로그램  (0) 2006.05.26
<?
   header('Location:phpBB2/');
?>

접속되면 특정 주소로 보낸다.
AcroEdit 에서 사용자 도구 명령으로  C# 파일을 컴파일 하는 설정

메뉴 이름 : 임의로 입력
명령 : 예)C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe  // csc.exe 있는곳을 찾아서 경로를 적어 준다.
인자 : %NAME%   // 활성화된 파일의 이름
작업 디록토리 : %PATH%   // 활성화된 파일의 경로
단축키 : Ctrl + 1

다음의 화면은 예제 화면이다.




























이 내용은 TCP/IP 소켓 프로그래밍 C#을 참고 하였습니다.

using System;
using System.Net;
using System.Net.Sockets;

class TcpEchoServer {
private const int BUFSIZE = 32; // 수신 버퍼의 크기

static void Main(string[] args) {

if (args.Length > 1) // 파라미터 개수 확인
throw new ArgumentException("Parameters: [<port>]");

int servPort = (args.Length == 1) ? Int32.Parse(args[0]): 7;

TcpListener listener = null;

try {
// 클라이언트의 연결 요청을 수락할 TcpListener 인스턴스를 생성
listener = new TcpListener(IPAddress.Any, servPort);
listener.Start();
} catch (SocketException se) {
Console.WriteLine(se.ErrorCode + ": " + se.Message);
Environment.Exit(se.ErrorCode);
}

byte[] rcvBuffer = new byte[BUFSIZE]; // 수신 버퍼
int bytesRcvd; // 현재까지 수신된 바이트 수

for (;;) {
TcpClient client = null;
NetworkStream netStream = null;

try {
client = listener.AcceptTcpClient(); //클라이언트 연결 요청을 수락
netStream = client.GetStream();
Console.Write("Handling client - ");

// 클라이언트가 0의 값을 전송하여 연결을 종료할 때까지 계속 수신
int totalBytesEchoed = 0;
while ((bytesRcvd = netStream.Read(rcvBuffer, 0, rcvBuffer.Length)) > 0) {
netStream.Write(rcvBuffer, 0, bytesRcvd);
totalBytesEchoed += bytesRcvd;
}

Console.WriteLine("echoed {0} bytes.", totalBytesEchoed);

// 스트림과 소켓을 종료하여 이 클라이언트와의 연결을 종료
netStream.Close();
client.Close();
} catch (Exception e) {
Console.WriteLine(e.Message);
netStream.Close();
}
}
}
}


// -----------------------------------
// FirstWinFormsProgram.cs
// -----------------------------------

using System.Windows.Forms;

class FirstWinFormsProgram
{
public static void Main()
{
Application.Run(new Form());
}
}
실행 결과

















'C#' 카테고리의 다른 글

.NET 기반의 Socket클래스를 이용한 Echo Client 프로그램  (0) 2006.05.29
TcpEchoServer 프로그램  (0) 2006.05.28
TcpEchoClient 프로그램  (0) 2006.05.26
호스트 정보를 반환하는 프로그램  (0) 2006.05.26
마소의 강좌  (0) 2006.05.18
regedit를 띄운후 다음과 같이 작업한다.

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\dos prompt] 에
  "현재 위치에서 명령 프롬프트 열기(&D)" 입력한다.


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\dos prompt\command] 에
  cmd.exe /k "cd %1" 입력한다.
이 내용은 TCP/IP 소켓 프로그래밍 C#을 참고 하였습니다.

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을 사용한다.

+ Recent posts