[C#]TCP/IP + SQL -_-a C# 2008. 12. 26. 13:52

흠냐.. -_- 그냥 간단한 형식으로 만들었다

테스팅만 되게..

근데 -_- 근데!! 왜!!

-_- WrteLine만 해서 보낼 경우는 데이터가 왜 안가지 -_-;;

Flush()는 스트림을 비우는게 아닌감 -_-

난 그렇게 알고 있었는데...

뭐 암튼지간 -_- 여기 저기 기웃거림 뭔가 알겠지 -_-;;

******TCP/IP + DataBase Server Code 1:1

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Data.SqlClient;

namespace server
{
    public partial class Form1 : Form
    {
        TcpListener server;
        TcpClient client;
        NetworkStream Stream = null;
        StreamReader reader;
        StreamWriter writer;
        Thread reciive;
        bool connect;
        private delegate void MBox();

        public Form1()
        {
            InitializeComponent();
        }    
      
        private void Check()
        {
            try
            {               
                client = server.AcceptTcpClient();
                connect = true;
                Stream = client.GetStream();
                reader = new StreamReader(Stream);
                writer = new StreamWriter(Stream);
                reciive = new Thread(new ThreadStart(Recieve));
                reciive.Start();
            }
            catch (Exception ex) { }
        }

        private void Recieve()
        {
            try
            {
                while (connect)
                {
                    Thread.Sleep(1);
                    if (Stream.CanRead)
                    {
                        Thread.Sleep(1);
                        if (Stream.CanRead)
                        {
                            string temp = reader.ReadLine();
                            if (temp.Length > 0)
                            {
                                Search();
                            }
                        }
                    }
                }
            }
            catch (Exception ex) { }
        }

        private void Search()
        {
            string tests = @"User Id=sa; Password=cjstkd; Server =192.168.1.209; Initial Catalog = test";
            SqlConnection conn;
            SqlCommand cmd;
            SqlDataReader dr;
            try
            {
                conn = new SqlConnection(tests);
                conn.Open();
                cmd = new SqlCommand("select id from ID_PW", conn);
                cmd.CommandType = CommandType.Text;
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    writer.WriteLine(dr.GetString(0));
                    writer.Flush();
                }
                dr.Close();
                conn.Close();
            }
            catch (Exception ex) { }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Thread checkThread = new Thread(new ThreadStart(Check));
            checkThread.Start();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            connect = false;
            if (reader != null)
                reader.Close();
            if (writer != null)
                writer.Close();
            if (server != null)
                server.Stop();
            if (client != null)
                client.Close();
            if (reciive != null)
                reciive.Abort();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            IPAddress addr = new IPAddress(0);
            int port = 5425;
            server = new TcpListener(addr, port);
            server.Start();
            Check();
            button2.Text="Start";
        }
    }
}

*****TCP/IP Client

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
using System.Threading;

namespace client
{
    public partial class Form1 : Form
    {
        TcpClient client;
        StreamReader reader;
        StreamWriter writer;
        NetworkStream Stream;
        Thread receive;
        bool connect;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try{
                client = new TcpClient();
                client.Connect("192.168.1.209",5425);
                Stream = client.GetStream();
                connect = true;
                reader = new StreamReader(Stream);
                writer = new StreamWriter(Stream);
                receive = new Thread(new ThreadStart(Recieve));
                receive.Start();
            }
            catch(Exception ex){}
        }
                   
        private void Recieve(){
            try{
                while(connect)
                {
                    Thread.Sleep(1);
                    if (Stream.CanRead)
                    {
                        string temp = reader.ReadLine();
                        if (temp.Length > 0)
                            MessageBox.Show(temp);
                    }
                }
            }
            catch(Exception e){}
        }

        private void button2_Click(object sender, EventArgs e)
        {
            writer.WriteLine("search");
            writer.Flush();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            connect = false;
            if (reader != null)
                reader.Close();
            if (writer != null)
                writer.Close();
            if (client != null)
                client.Close();
            if (receive != null)
                receive.Abort();
        }                   
    }
}

*********************************************************************************
1:다 Server
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Data.SqlClient;

namespace server
{
    public partial class Form1 : Form
    {
        TcpListener server;
        TcpClient client = null;
        NetworkStream Stream = null;
        StreamReader reader = null;
        StreamWriter writer = null;
        Thread reciive=null;
        Thread checkThread = null;
        bool connect=false;

        public Form1()
        {
            InitializeComponent();
        }    
      
        private void Check()
        { 
            string temp=null;
            try
            {
                while (true)
                {
                    temp = null;
                    client = server.AcceptTcpClient();
                    connect = true;

                    Stream = client.GetStream();
                    reader = new StreamReader(Stream);
                    writer = new StreamWriter(Stream);
                    temp = reader.ReadLine();
                    if (temp.Equals("search"))
                    {
                        Search();                    
                    }
                    else if (temp.Equals("search1"))
                    {
                        Search1();
                    }
                    temp = null;               
                }
            }
            catch (Exception ex) { }
        }

        private void Recieve()
        {
            try
            {
                while (connect)
                {
                    Thread.Sleep(1);
                    if (Stream.CanRead)
                    {
                        Thread.Sleep(1);
                        if (Stream.CanRead)
                        {
                            string temp = reader.ReadLine();
                            if (temp.Length > 0)
                            {
                                if (temp.Equals("search"))
                                {
                                    MessageBox.Show(temp);
                                    Search();
                                    temp = null;
                                }
                                else if (temp.Equals("search1"))
                                {
                                    MessageBox.Show(temp);
                                    Search1();
                                    temp = null;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex) { }
        }

        private void Search()
        {
            string tests = @"User Id=sa; Password=cjstkd; Server =192.168.1.209; Initial Catalog = test";
            SqlConnection conn;
            SqlCommand cmd;
            SqlDataReader dr;
            try
            {
                conn = new SqlConnection(tests);
                conn.Open();
                cmd = new SqlCommand("select id from ID_PW", conn);
                cmd.CommandType = CommandType.Text;
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    writer.WriteLine(dr.GetString(0));
                    writer.Flush();
                }
                dr.Close();
                conn.Close();
            }
            catch (Exception ex) { }
        }
        private void Search1()
        {
            string tests = @"User Id=sa; Password=cjstkd; Server =192.168.1.209; Initial Catalog = test";
            SqlConnection conn;
            SqlCommand cmd;
            SqlDataReader dr;
            try
            {
                conn = new SqlConnection(tests);
                conn.Open();
                cmd = new SqlCommand("select pw from ID_PW", conn);
                cmd.CommandType = CommandType.Text;
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    writer.WriteLine(dr.GetString(0));
                    writer.Flush();
                }
                dr.Close();
                conn.Close();
            }
            catch (Exception ex) { }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
           
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            connect = false;
            if (reader != null)
                reader.Close();
            if (writer != null)
                writer.Close();
            if (server != null)
                server.Stop();
            if (client != null)
                client.Close();             
            if (reciive != null)
                reciive.Abort();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            IPAddress addr = new IPAddress(0);
            int port = 5425;
            server = new TcpListener(addr, port);
           
            server.Start(); 
                     
                checkThread = new Thread(new ThreadStart(Check));
               
                checkThread.IsBackground = true;
                checkThread.Start();
            button2.Text="Start";
        }
    }
}
*********************************************************************************
1:다 Client
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
using System.Threading;

namespace client
{
    public partial class Form1 : Form
    {
        TcpClient client;
        StreamReader reader;
        StreamWriter writer;
        NetworkStream Stream;
        Thread receive;
        bool connect;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try{
                client = new TcpClient();
                client.Connect("localhost",5425);
                Stream = client.GetStream();
                connect = true;
                reader = new StreamReader(Stream);
                writer = new StreamWriter(Stream);
                receive = new Thread(new ThreadStart(Recieve));               
                receive.Start();             
            }
            catch(Exception ex){}
        }
                   
        private void Recieve(){
            try{
                while (connect)
                {
                    Thread.Sleep(1);
                    if (Stream.CanRead)
                    {
                        string temp = reader.ReadLine();
                        if (temp.Length > 0)
                            MessageBox.Show(temp);
                    }
                }
            }
            catch(Exception e){}
        }

        private void button2_Click(object sender, EventArgs e)
        {
            writer.WriteLine("search");
            writer.Flush();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            connect = false;
            if (reader != null)
                reader.Close();
            if (writer != null)
                writer.Close();
            if (client != null)
                client.Close();
            if (receive != null)
                receive.Abort();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            writer.WriteLine("search1");
            writer.Flush();
        }                   
    }
}

[C#]MSI 자동배포 생성 C# 2008. 10. 5. 22:04

1) 프로젝트 작성

2) AP폴더 내에 파일 삽입

3) 빌드

자동배포 MSI와 Setup파일이 자동 생성된다

[C#]다운로드 Method C# 2008. 9. 30. 18:05

public void Download(string downURL) {  
   System.Net.WebClient request = new System.Net.WebClient();
   byte[] newFileData = request.DownloadData(downURL);
   string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
   Response.Write(fileString);
}

-_-a 웹 클라이언트를 통한.. 파일 데이터 다운로드라 해야하나.. -_-a

뭐 그런 취지로 만든 것이답.

현재 윈도우 해상도 얻기
Size Bounds = Screen.PrimaryScreen.Bounds.Size;
MessageBox.Show(Bounds.ToString());
(결과) Width=2560, Height=1600

작업 표시줄 제외한 윈도우 영역 크기

Size WorkingArea = Screen.PrimaryScreen.WorkingArea.Size;
MessageBox.Show(WorkingArea.ToString());
(결과) Width=2560, Height=1570

※ 결과 : 2560*1600 해상도에서 테스트 한 결과

큰 차이는 없다 null Exception 처리를 한다 안한다의 차이 뿐이다

Parse를 살펴보면 문자를 Integer로 바꿔준다.

그리고 null이 입력될경우 ArgumentNullException 처리를 해준다.

Convert.ToInt32경우는 입력값이 null일경우 0을 반환한다.

그리고 나머지는 int.Parse와 같다.

[C#]파일 감시 C# 2008. 9. 18. 13:18

C#에는 재미있는 클래스들이 많이 있다.

그 중 하나가 파일 시스템을 감시하는 FileSystemWatcher 클래스가 있다.

하지만 크로스 스레드 문제로 인한 오류가 발생하는데 필자는 다음과 같이 하여 이용하고 있다.           
           CheckForIllegalCrossThreadCalls = false;//크로스 스레드 자체를 무시.
            FileSystemWatcher watcher = new FileSystemWatcher();

            watcher.Path = txtPath.Text;
           
            watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                   | NotifyFilters.FileName | NotifyFilters.DirectoryName;
       
            watcher.Filter = "*.*";
                   
            watcher.Changed += new FileSystemEventHandler(OnChanged);
            watcher.Created += new FileSystemEventHandler(OnChanged);
            watcher.Deleted += new FileSystemEventHandler(OnChanged);
            watcher.Renamed += new RenamedEventHandler(OnChanged);
            여기에서 OnChanged는 메소드로 각 해당하는 상태가 일어났을 시 그 메소드를 실행한다.

            watcher.EnableRaisingEvents = true;

WebBrowser 컨트롤 사용 시 고려 사항

WebBrowser 컨트롤을 사용할 때는 다음 사항을 고려해야 합니다.
  • WebBrowser 컨트롤은 문서를 비동기적으로 탐색합니다. WebBrowser1.Navigate를 호출하면 문서를 완전히 로드하기 전에 해당 Visual C# 응용 프로그램에 컨트롤이 반환됩니다. 포함된 문서를 자동화할 계획이라면 해당 문서가 완전히 로드된 시기를 알리도록 NavigateComplete2 이벤트를 사용해야 합니다. Office 문서 개체에 대한 참조를 가져오기 위해 전달되는 WebBrowser 개체의 Document 속성(이전 코드에서 oDocument로 설정됨)을 사용합니다.
  • WebBrowser 컨트롤은 메뉴 병합을 지원하지 않습니다.
  • Internet Explorer 최신 버전(5.0 이상)에서도 아래의 코드를 사용하여 도킹된 도구 모음을 표시할 수 있습니다.
     // This is a toggle option, so call it once to show the   // toolbars and once to hide them. This works with Internet Explorer 5  // but often fails to work properly with earlier versions.    Object refmissing = System.Reflection.Missing.Value;  axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, 
    Object refmissing = System.Reflection.Missing.Value;
     axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS,
    SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,
    ref refmissing, ref refmissin);
  • 하나의 프로젝트에서 둘 이상의 WebBrowser 컨트롤을 사용하여 동일한 종류의 Office 문서를 로드하면 문제가 발생하는 것으로 알려져 있습니다. 즉, 컨트롤 모두 Word 문서만 로드하거나 Excel 스프레드시트만 로드하는 경우 문제가 발생합니다. 프로젝트당 컨트롤을 하나만 사용하고 한 번에 한 가지 문서만 탐색하는 것이 좋습니다.

    가장 일반적인 문제는 Office 명령 모음이 사용할 수 없는 것처럼 나타나는 것입니다. 같은 폼에 WebBrowser 컨트롤이 두 개 있고, 두 컨트롤 모두 Word 문서를 로드하며, 앞의 예제 코드를 사용하여 도구 모음을 표시한 경우 하나의 도구 모음만 활성화되어 제대로 작동합니다. 다른 도구 모음은 사용 불가능하게 될 수 있습니다.
  • 다른 명령 단추의 Click 이벤트(또는 적절한 코드 부분)에서 WebBrowser의 현재 내용을 지우려면 아래의 코드를 사용하여 기본 빈 페이지로 이동하도록 합니다.
       AxWebBrowser1.Navigate("about:blank");

참조

WebBrowser 컨트롤을 사용하는 것에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.

304562 INFO: Visual Studio .NET Does Not Provide an OLE Container Control for Win Forms

243058 HOWTO: Use the WebBrowser Control to Open an Office Document

162719 HOWTO: Use the WebBrowser Control from Visual Basic 5.0

202476 BUG: Cannot Edit Word Document in OLE or WebBrowser Control

188271 HOWTO: Print Contents of the Web Browser Control From VB

191692 PRB: Shdocvw.dll Is Not Included in PDW Setup Package

238313 PRB: Accessing the Internet Explorer Document Object Model From Visual Basic

[C#]WinAPI적용 C# 2008. 7. 31. 01:32
using System.Runtime.InteropServices 네임스페이스 추가
[DIlImport("라이브러리")]

int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount);

을 C#으로 변형하면

public
static extern int GetWindowText(int hWnd, StringBuilder lpString, int nMaxCount);

출처 : http://jijanghun.tistory.com/21
http://www.pinvoke.net/default.aspx/user32.SendInput

SendInput위한 Mouse,Keyboard,Input구조체 정의
[C#]Namespace 정리 C# 2008. 7. 30. 17:15

Mcrosoft.JSharp : JSharp.NET 을 사용한 컴파일과 코드 생성 제공
Mcrosoft.VisualBasic : VisualBasic.NET 을 사용한 컴파일과 코드 생성 제공
Mcrosoft.Win32 : 윈도우 레지스트리 참조와 윈도우 시스템 이벤트 제공


System : 일반적으로 사용되는 값 타입과 레퍼런스 데이타 타입, 이벤트와 이벤트 핸들러, 인터페이스 , 속성, 예외 등을 포함하며, 가장 중요한 네임스페이스이다.
System.Collections : 리스트와 큐 배열, 해쉬 테이블, 사전 등과 같은 컬렉션 타입 제공
System.ComponentModel : 컴포넌트의 런타임과 디자인 타임 때 사용 제공
System.Configuration : .NET 프레임 워크 설정 세팅을 위해 참조 제공
System.Data : ADO.NET 타입 제공
System.Data.SqlClient : Sql Server.NET 데이터 타입 제공
System.Data.SqlTypes : 윈시SQL서버 데이터 타입 제공
System.Diagnostics : 디버깅과 트래킹을 위한 애플리케이션, 윈도우의 이벤트 로그 클래스제공
System.DirectoryService : LDAP이나 NDS와 같은 서비스 제공자를 사용하여 동적 디렉토리 참조 제공
System.Drawing : 윈도우 GDI+  그래픽 타입 제공
System.Globalization : 언어 수용과 관련되 타입, 스티링 정렬 순서, 나라/지역, 달력,날짜, 통화와 같은 숫자 형태 제공
System.IO : 스트림과 파일에 읽고 씀
System.Messaging : 메시지가 큐에 넣어 보내고 받고 관리하는 기능(MSMQ) 제공
System.Net : DNS와 HTTP같은 간단한 네트위크 프로토콜 API제공
System.Net.Sockets : TCP/UDp 소켓 API제공
System.Reflection : 적재된 타입과 멤버 참조 제공
System.Reflection.Emit : 메타데이터/IL 생성과 PE파일 생성 제공
System.Resources 애플리케이션 리소스위 생성과 관리 제공
System.Runtime.InteropService : COM 객체와 원시 API 참조 제공
System.Runtime.Remoting : 분산 객체의 생성과 설정 제공
System.Runtime.Remoting.Channels : 원격 채널관리와 채널 싱크(sink) 제공
System.Runtime.Remoting.Channels.Http : HTTP(SOAP) 채널 관리 제공
System.Runtime.Remoting.Channels.Tcp : TCP(이진) 채널 관리 제공
System.Runtime.Remoting.Lifetime : 원격 객체의 생명주기 관리 제공
System.Security : CLR 보안 시스템 하의 참조 제공
System.Security.Permissions : 정책에 기반한 오퍼레이션과 리소스 참조 제한 제공
System.Security.Policy : CLR 보안 정책 시스템에 적용될 규칙이 정의된 코드 그룹, 멤버쉽 상태 , 증거 제공
System.Security.Principal : 규칙 기반의 보안이 사용된 주요 클래스, 인터페이스, 열거형 제공
System.ServiceProcess : 윈도우 서비스 설치와 실행 제공
System.Text : ASCII, 유니코드, UTF-7, UTF-8 과 같은 텍스트 인코딩과 전환 제공
System.Text.RegularExpression! : 이미 만들어져 있는 정규 표현식 엔진 참조 제공
System.Threading : 멀티 쓰레드 프로그래밍을 위한 클래스와 인터페이스 제공
System.Timers : 특정한 시간 간격으로 이벤트를 발생시키는 타이머 컴포넌트 제공
System.Web : HttpApplication, HttpRequest. HttpResponse 와 같은 ASP.NET 클래스에서 사용하는 기능을 포함한 브라우저/ 서버간의 통신 제공
System.Web.Configuration : ASP.NET설정 클래스와 열거형 제공
System.Web.Services : 웹 서비스 제작과 사용 제공
System.Web.Services.Description : WSDL을 사용한 웹 서비스 제공
System.Web.Services.Discovery : DISCO를 통한 웹 서비스 제공
System.Web.SessionState : ASP.NET세션 상태 참조 제공
System.Web.UI : ASP.NET 웹 페이지와 컨트롤 생성
System.Web.UI.Design : 웹 폼을 제공하기 위한 디자인 제공
System.Web.UI.Design.WebControls : 웹 컨트롤을 제공하기 위한 다지인 제공
System.Web.UI.HtmlControls : HTML 서버 컨트롤 생성 제공
System.Web.UI.WebControls : Web 서버 컨트롤 생성 제공
System.Windows.Forms : 윈도우 폼 기반의 사용자 인터페이스와 컨트롤 생성 제공
System.Windows.Forms.Design : 윈도우 품을 위한 디자인 제공
System.Xml : 표준 XML제공
System.Xml.Schema : 표준 XML스키마 제공
System.Xml.Serialization : XML문서 또는 스트림 객체의 직렬화 제공
System.Xml.XPath : XPath 파서와 평가 엔진 제공
System.Xml.Xsl : XSL전환 제공