'Server Story..../c#'에 해당되는 글 4건

  1. 2012.04.13 c# 소켓통신 예제.
  2. 2012.01.18 windows command iis ftp 명령어,
  3. 2012.01.03 c# windows Service 등록 방법
  4. 2011.11.25 c# app.config 파일에 저장 및 읽기

/ Server Socket

// NameSpace 선언
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace ServerSideSocket
{
    class ServerClass
    {
        public static Socket Server , Client;
        
        public static byte[] getByte = new byte[1024];
        public static byte[] setByte = new byte[1024];
        
        public const int sPort = 5000;
        
        [STAThread]
        static void Main(string[] args)
        {
            string stringbyte = null;
            IPAddress serverIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
            
          try
          {            
            Server= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            Server.Bind(serverEndPoint);
            Server.Listen(10);
static byte[] getByte = new byte[1024];
            Console.WriteLine("-----------------------------------------------------");
            Console.WriteLine(" 클라이언트의 연결을 기다립니다........ ");
            Console.WriteLine("-----------------------------------------------------");
                                    
            Client = Server.Accept();
    
            if(Client.Connected)
            {
                while(true)
                {
                    Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
                    stringbyte = Encoding.UTF7.GetString(getByte);

                    if (stringbyte != String.Empty)
                    {
                      int getValueLength = 0;
                      getValueLength = byteArrayDefrag(getByte);
                      stringbyte = Encoding.UTF7.GetString(getByte,0,getValueLength+1);
                      Console.WriteLine("수신데이터:{0} | 길이:{1}",stringbyte,getValueLength+1);
                      setByte = Encoding.UTF7.GetBytes(stringbyte);
                      Client.Send(setByte,0,setByte.Length,SocketFlags.None);
                    }
                    
                    getByte = new byte[1024];
                    setByte = new byte[1024];
                }
            }
          }
          catch(System.Net.Sockets.SocketException socketEx)
          {
            Console.WriteLine("[Error]:{0}", socketEx.Message);
          }
          catch(System.Exception commonEx)
          {
            Console.WriteLine("[Error]:{0}", commonEx.Message);
          }
          finally
          {
            Server.Close();
            Client.Close();
          }
        }
        
        public static int byteArrayDefrag(byte[] sData)
        {
          int endLength = 0;
          
          for(int i = 0; i < sData.Length; i++)
          {
            if((byte)sData[i] != (byte)0)
            {
              endLength = i;
            }
          }
          
          return endLength; 
        }
    }



// Client Socket

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

namespace ClientSideSocket
{
    class ClientClass
    {
        public static Socket socket;
        public static byte[] getbyte = new byte[1024];
        public static byte[] setbyte = new byte[1024];

        public const int sPort = 5000;

        [STAThread]
        static void Main(string[] args)
        {
            string sendstring = null;
            string getstring = null;

            IPAddress serverIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);

            socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            Console.WriteLine("-----------------------------------------------------");
            Console.WriteLine(" 서버로 접속을 시작합니다. [엔터를 입력하세요] ");
            Console.WriteLine("-----------------------------------------------------");
            Console.ReadLine();

            socket.Connect(serverEndPoint);

            if (socket.Connected)
            {
                Console.WriteLine(">> 정상적으로 연결 되었습니다.(전송한 데이터를 입력해주세요)");
            }

            while(true)
            {
                Console.Write(">>");
                sendstring = Console.ReadLine();
                
                if(sendstring != String.Empty)
                {
                  int getValueLength = 0;
                  setbyte = Encoding.UTF7.GetBytes(sendstring);
                  socket.Send(setbyte,0,setbyte.Length,SocketFlags.None);
                  Console.WriteLine("송신 데이터 : {0} | 길이{1}", sendstring, setbyte.Length);
                  socket.Receive(getbyte,0,getbyte.Length,SocketFlags.None);
                  getValueLength = byteArrayDefrag(getbyte);
                  getstring = Encoding.UTF7.GetString(getbyte,0,getValueLength+1);
                  Console.WriteLine(">>수신된 데이터 :{0} | 길이{1}" , getstring , getValueLength+1);
                }
                
                getbyte = new byte[1024];
             }
        }
        
        public static int byteArrayDefrag(byte[] sData)
        {
          int endLength = 0;
          
          for(int i = 0; i < sData.Length; i++)
          {
            if((byte)sData[i] != (byte)0)
            {
              endLength = i;
            }
          }
          
          return endLength; 
        }
    }
}




이내용은  http://blog.daum.net/_blog/BlogTypeView.do?blogid=0OYkw&articleno=46&categoryId=2&regdt=20090930152633#ajax_history_home  여기서 퍼옴.


'Server Story.... > c#' 카테고리의 다른 글

c# 소켓통신 예제.  (0) 2012.04.13
windows command iis ftp 명령어,  (0) 2012.01.18
c# windows Service 등록 방법  (0) 2012.01.03
c# app.config 파일에 저장 및 읽기  (0) 2011.11.25
Posted by Sumin Family

서버 컨트롤 작업중  ftp 의 로그파일 설정을 바꿔야 할일이 생겼다, 

음, 물론 c#으로 짜지만  dos 의 명령어를 콜해서 사용하기로 했고 해서 아래와 같은 명령어를 찾았다, 


이건 로그파일 의 저장 경로 변경, 
%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.ftpServer.logFile.directory:"%MOVETO%inetpub\logs\logfiles"

 
이건 로그파일 을 저장하는 방식 변경, 
%Windir%\System32\inetsrv\appcmd.exe set config -section:system.applicationHost/sites -siteDefaults.ftpServer.logFile.logExtFileFlags:"+"\"Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, FtpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, Host, FtpSubStatus, Session, FullPath, Info, ClientPort\""; 

 
이런 내용을 c# 등을 통해서처리하려면, 이렇게.. 
참고 사이트
http://www.iis.net/ConfigReference/system.ftpServer
 열심히 연구 하시길.....  


http://www.iis.net/ConfigReference/system.applicationHost/sites/siteDefaults/logFile



그외. 아래와 같은 명령어들이 있다.

==================================================================================

더보기

 

'Server Story.... > c#' 카테고리의 다른 글

c# 소켓통신 예제.  (0) 2012.04.13
windows command iis ftp 명령어,  (0) 2012.01.18
c# windows Service 등록 방법  (0) 2012.01.03
c# app.config 파일에 저장 및 읽기  (0) 2011.11.25
Posted by Sumin Family
일단 아래 블로그 참조..

자세하게 나와 있진 않으나,  그나마 참고할만하.ㅁ 

http://angeleyes.tistory.com/141

'Server Story.... > c#' 카테고리의 다른 글

c# 소켓통신 예제.  (0) 2012.04.13
windows command iis ftp 명령어,  (0) 2012.01.18
c# windows Service 등록 방법  (0) 2012.01.03
c# app.config 파일에 저장 및 읽기  (0) 2011.11.25
Posted by Sumin Family

App.config 읽고 쓰기

configuration file에 키로 값을 설정해 놓고
필요할 때마다 불러서 쓰면 *.exe.config 설정값만 변경함으로써
프로그램을 좀 더 쉽게 관리할 수 있다.

예전에 COM port 통신 프로그램을 만들면서 포트와 관련된 설정값들을
Configuration 파일을 통해 관리함으로써 따로 디버그 필요없이 *.exe.config 파일만 변경해 사용했다.

app.config 파일을 추가하고 아래의 코드와 같이 <appsettings> 요소에 <add> 요소를 집어넣은 후
메인 소스 코드에서 간단하게 불러오거나 (AppSettingsReader
읽어오고 쓰는 방법(Configuration)을 알아보자


*.exe.config 파일
<configuration>
  <appsettings>
    <add key="appConStr" value="server-localhost;uid='sa';pwd='';database=Cars"/>
    <add key="timesToSayHello" value="8"/>
  </appsettings>
</configuration>


*.cs 파일
using System;
using System.Configuration;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //방법 1
            AppSettingsReader ar = new AppSettingsReader();
            
            //key를 가지고 설정된 value값을 가져온다.
            string str = (string)ar.GetValue("appConStr", typeof(string));
            int numbOfTimes = (int)ar.GetValue("timesToSayHello", typeof(int));

            //방법 2[읽고 쓰기] 
            //before using this code, Add System.Configuration reference
            System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            //쓰기
            config.AppSettings.Settings["appConStr"].Value = "3";

            //읽기
            string value = ConfigurationManager.AppSettings["appConStr"];

            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
        }
    }
}


주의할점-
프로그램 개발시 디버그 모드(F5)에는 프로젝트의 Root 폴더에 있는 App.config 파일을 debug/bin 폴더로 복사해 사용한다.

디버그 모드에서 아무리 debug/bin 의 app.config 파일을 고치고 삽질을 해도 다음 디버그 모드때에는 root 폴더의 app.config 파일이 덮어씌우므로 변하지 않는것 처럼 보이는 것이다. Bin 폴더에서 직접 exe를 실행시켜 config 파일을 바꾸어 보면 다음에 프로그램을 실행시켜도 변경한 내용이 적용되어 있는걸 확인할 수 있다.

나처럼 안바뀐다고 성질부리지 말자 -_ㅠ

'Server Story.... > c#' 카테고리의 다른 글

c# 소켓통신 예제.  (0) 2012.04.13
windows command iis ftp 명령어,  (0) 2012.01.18
c# windows Service 등록 방법  (0) 2012.01.03
c# app.config 파일에 저장 및 읽기  (0) 2011.11.25
Posted by Sumin Family


티스토리 툴바