메뉴 건너뛰기

아시아평생교육원

소프트웨어자료실

카카오톡 메세지 자동전송 프로그램.PNG

 

카카오톡 전송을 이용하여 메세지 전송을

자동으로 해주는 자동메세지 전송 프로그램입니다.

카카오톡에서 작성한 내용뿐만아니라 이미지도

자동으로 전송할수 있는 자동전송 프로그램입니다.

 

 

 

 

using System.Reflection;

using System.Runtime.CompilerServices;

 

//

// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 제어됩니다. 

// 어셈블리와 관련된 정보를 수정하려면

// 이 특성 값을 변경하십시오.

//

[assembly: AssemblyTitle("")]

[assembly: AssemblyDescription("")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("")]

[assembly: AssemblyCopyright("")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]

 

//

// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.

//

//      주 버전

//      부 버전 

//      빌드 번호

//      수정 번호

//

// 모든 값을 지정하거나

// 아래와 같이 '*'를 사용하여 수정 번호 및 빌드 번호가 자동으로 지정되도록 할 수 있습니다.

 

[assembly: AssemblyVersion("1.0.*")]

 

//

// 어셈블리에 서명하려면 사용할 키를 지정해야 합니다. 어셈블리 서명에 대한 자세한 내용은 

// Microsoft .NET Framework 설명서를 참조하십시오.

//

// 서명하는 데 사용할 키를 제어하려면 아래 특성을 사용합니다. 

//

// 참고: 

//   (*) 키를 지정하지 않으면 어셈블리에 서명할 수 없습니다.

//   (*) KeyName은

//       사용자 컴퓨터의 CSP(암호화 서비스 공급자)에

//        설치되어 있는 키를 참조하고 KeyFile은 키가 포함된 파일을

//        참조합니다.

//   (*) KeyFile과 KeyName 값을 모두 지정하면 

//       다음과 같은 프로세스가 발생합니다.

//       (1) CSP에 KeyName이 있으면 해당 키가 사용됩니다.

//       (2) KeyName은 없고, KeyFile이 있으면 

//           KeyFile의 키가 CSP에 설치되어 사용됩니다.

//   (*) sn.exe(강력한 이름 유틸리티)를 사용하면 KeyFile을 만들 수 있습니다.

//        KeyFile을 지정하는 경우

//       KeyFile의 위치는 %Project Directory%\obj\<configuration>의 프로젝트 출력 디렉터리 위치를 기준으로 하는 상대 위치이어야 합니다.

//       예를 들어, KeyFile이 프로젝트 디렉터리에 있는 경우

//       AssemblyKeyFile 특성을 

//       [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]로 지정합니다.

//   (*) 서명 연기는 고급 옵션입니다.

//       이 옵션에 대한 자세한 내용은 Microsoft .NET Framework 설명서를 참조하십시오.

//

[assembly: AssemblyDelaySign(false)]

[assembly: AssemblyKeyFile("")]

[assembly: AssemblyKeyName("")]

 

 

 

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

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Net;

using System.Net.Sockets;

using System.IO;

using System.Threading;

using System.Text;

namespace Chapter13_2

{

/// <summary>

/// Form1에 대한 요약 설명입니다.

/// </summary>

public class Form1 : System.Windows.Forms.Form

{

private System.Windows.Forms.GroupBox groupBox1;

private System.Windows.Forms.TextBox textBox1;

private System.Windows.Forms.Button button1;

private System.Windows.Forms.Button button2;

private System.Windows.Forms.Button button3;

/// <summary>

/// 필수 디자이너 변수입니다.

/// </summary>

private System.ComponentModel.Container components = null;

 

private const int port=4567;

private Socket listenSocket;

private Socket clientSocket;

private Socket remoteSocket;

private IPEndPoint listenEP;

private IPEndPoint remoteEP;

private Thread listenThread;

private System.Windows.Forms.ListBox listBox1;

private Thread streamThread;

private System.Windows.Forms.TextBox textBox2;

private System.Windows.Forms.Button button4;

private Thread clientThread;

private bool isServer=true;

 

public Form1()

{

//

// Windows Form 디자이너 지원에 필요합니다.

//

InitializeComponent();

//

// TODO: InitializeComponent를 호출한 다음 생성자 코드를 추가합니다.

//

}

 

/// <summary>

/// 사용 중인 모든 리소스를 정리합니다.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null) 

{

components.Dispose();

}

}

base.Dispose( disposing );

}

 

#region Windows Form 디자이너에서 생성한 코드

/// <summary>

/// 디자이너 지원에 필요한 메서드입니다.

/// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.

/// </summary>

private void InitializeComponent()

{

this.groupBox1 = new System.Windows.Forms.GroupBox();

this.button3 = new System.Windows.Forms.Button();

this.button2 = new System.Windows.Forms.Button();

this.button1 = new System.Windows.Forms.Button();

this.textBox1 = new System.Windows.Forms.TextBox();

this.listBox1 = new System.Windows.Forms.ListBox();

this.textBox2 = new System.Windows.Forms.TextBox();

this.button4 = new System.Windows.Forms.Button();

this.groupBox1.SuspendLayout();

this.SuspendLayout();

// 

// groupBox1

// 

this.groupBox1.Controls.Add(this.button3);

this.groupBox1.Controls.Add(this.button2);

this.groupBox1.Controls.Add(this.button1);

this.groupBox1.Controls.Add(this.textBox1);

this.groupBox1.Location = new System.Drawing.Point(0, 8);

this.groupBox1.Name = "groupBox1";

this.groupBox1.Size = new System.Drawing.Size(288, 88);

this.groupBox1.TabIndex = 0;

this.groupBox1.TabStop = false;

this.groupBox1.Text = "접속";

// 

// button3

// 

this.button3.Location = new System.Drawing.Point(152, 24);

this.button3.Name = "button3";

this.button3.Size = new System.Drawing.Size(128, 24);

this.button3.TabIndex = 3;

this.button3.Text = "클라이언트";

this.button3.Click += new System.EventHandler(this.button3_Click);

// 

// button2

// 

this.button2.Location = new System.Drawing.Point(8, 24);

this.button2.Name = "button2";

this.button2.Size = new System.Drawing.Size(128, 24);

this.button2.TabIndex = 2;

this.button2.Text = "서버";

this.button2.Click += new System.EventHandler(this.button2_Click);

// 

// button1

// 

this.button1.Location = new System.Drawing.Point(152, 56);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(128, 24);

this.button1.TabIndex = 1;

this.button1.Text = "접속";

this.button1.Visible = false;

this.button1.Click += new System.EventHandler(this.button1_Click);

// 

// textBox1

// 

this.textBox1.Enabled = false;

this.textBox1.Location = new System.Drawing.Point(8, 56);

this.textBox1.Name = "textBox1";

this.textBox1.Size = new System.Drawing.Size(128, 21);

this.textBox1.TabIndex = 0;

this.textBox1.Text = "127.0.0.1";

this.textBox1.Visible = false;

// 

// listBox1

// 

this.listBox1.ItemHeight = 12;

this.listBox1.Location = new System.Drawing.Point(0, 104);

this.listBox1.Name = "listBox1";

this.listBox1.Size = new System.Drawing.Size(288, 136);

this.listBox1.TabIndex = 1;

// 

// textBox2

// 

this.textBox2.Location = new System.Drawing.Point(0, 248);

this.textBox2.Name = "textBox2";

this.textBox2.Size = new System.Drawing.Size(200, 21);

this.textBox2.TabIndex = 2;

this.textBox2.Text = "";

// 

// button4

// 

this.button4.Location = new System.Drawing.Point(208, 248);

this.button4.Name = "button4";

this.button4.Size = new System.Drawing.Size(80, 24);

this.button4.TabIndex = 3;

this.button4.Text = "보내기";

this.button4.Click += new System.EventHandler(this.button4_Click);

// 

// Form1

// 

this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

this.ClientSize = new System.Drawing.Size(292, 273);

this.Controls.Add(this.button4);

this.Controls.Add(this.textBox2);

this.Controls.Add(this.listBox1);

this.Controls.Add(this.groupBox1);

this.Name = "Form1";

this.Text = "Form1";

this.groupBox1.ResumeLayout(false);

this.ResumeLayout(false);

 

}

#endregion

 

/// <summary>

/// 해당 응용 프로그램의 주 진입점입니다.

/// </summary>

[STAThread]

static void Main() 

{

Application.Run(new Form1());

}

 

private void button3_Click(object sender, System.EventArgs e)

{

//클라이언트로 실행했을때

//소켓을 생성하고 

//데이터를 받는 스레드를 생성한다.

this.textBox1.Visible=true;

this.button1.Visible=true;

try

{

remoteSocket=new Socket(AddressFamily.InterNetwork,

SocketType.Stream,ProtocolType.Tcp);

remoteEP=new IPEndPoint(IPAddress.Loopback,port);

clientThread=new Thread(new ThreadStart(client));

 

}

catch(System.Net.Sockets.SocketException se)

{

Console.WriteLine(se.ToString());

}

 

}

 

private void button2_Click(object sender, System.EventArgs e)

{

//서버로 실행했을때

//소켓을 생성하고

//데이타를 받는 스레드를 생성,시작한다.

//클라이언트가 접속하기를 기다리는

//스레드도 생성,시작한다.

try

{

listenSocket=new Socket(AddressFamily.InterNetwork,

SocketType.Stream,ProtocolType.Tcp);

listenEP=new IPEndPoint(IPAddress.Any,port);

listenSocket.Bind(listenEP);

listenSocket.Listen(5);

listenThread=new Thread(new ThreadStart(listen));

listenThread.Start();

streamThread=new Thread(new ThreadStart(Stream));

streamThread.Start();

this.listBox1.Items.Add("Server Start");

}

catch(System.Net.Sockets.SocketException se)

{

Console.WriteLine(se.ToString());

}

}

 

private void listen()

{

//클라이언트를 기다린다.

while(true)

{

Thread.Sleep(100);

clientSocket=listenSocket.Accept();

this.listBox1.Items.Add("클라이언트 접속");

}

}

 

private void Stream()

{

//서버편 데이타를 받는 스레드 함수

//

byte[] buffer=new byte[512];

string temp=null;

while(true)

{

Thread.Sleep(100);

if(clientSocket !=null)

{

int rec=clientSocket.Receive(buffer);

temp=Encoding.Unicode.GetString(buffer,0,rec);

this.listBox1.Items.Add(temp);

}

}

}

 

private void button4_Click(object sender, System.EventArgs e)

{

//서버와 클라이언트 모두

//데이타를 보내는 함수로

//서버일때와 클라이언트일때 보내는 소켓이 다르다.

byte[] send=new byte[512];

 

if(isServer)

{

Encoding.Unicode.GetBytes(this.textBox2.Text,

0,this.textBox2.Text.Length,send,0);

clientSocket.Send(send);

}

else

{

Encoding.Unicode.GetBytes(this.textBox2.Text,

0,this.textBox2.Text.Length,send,0);

remoteSocket.Send(send);

}

this.textBox2.Text="";

}

 

protected override void OnClosing(CancelEventArgs e)

{

if(listenThread != null)

listenThread.Abort();

if(streamThread != null)

streamThread.Abort();

 

base.OnClosing (e);

}

 

private void button1_Click(object sender, System.EventArgs e)

{

//클라이언트로 접속 버튼을 누르면

//서버에 접속을하고 

//데이타를 기다리는 스레드를 시작한다.

try

{

remoteSocket.Connect(remoteEP);

isServer=false;

clientThread.Start();

}

catch(System.Net.Sockets.SocketException se)

{

Console.WriteLine(se.ToString());

}

}

 

private void client()

{

//클라이언트가 서버로부터 데이타를

//수신대기하는 함수이다.

byte[] buffer=new byte[512];

string temp=null;

while(true)

{

Thread.Sleep(100);

if(remoteSocket !=null)

{

int rec=remoteSocket.Receive(buffer);

temp=Encoding.Unicode.GetString(buffer,0,rec);

this.listBox1.Items.Add(temp);

}

}

}

}

}

 

 

 

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

using System.Reflection;

using System.Runtime.CompilerServices;

 

//

// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 제어됩니다. 

// 어셈블리와 관련된 정보를 수정하려면

// 이 특성 값을 변경하십시오.

//

[assembly: AssemblyTitle("")]

[assembly: AssemblyDescription("")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("")]

[assembly: AssemblyCopyright("")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]

 

//

// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.

//

//      주 버전

//      부 버전 

//      빌드 번호

//      수정 번호

//

// 모든 값을 지정하거나

// 아래와 같이 '*'를 사용하여 수정 번호 및 빌드 번호가 자동으로 지정되도록 할 수 있습니다.

 

[assembly: AssemblyVersion("1.0.*")]

 

//

// 어셈블리에 서명하려면 사용할 키를 지정해야 합니다. 어셈블리 서명에 대한 자세한 내용은 

// Microsoft .NET Framework 설명서를 참조하십시오.

//

// 서명하는 데 사용할 키를 제어하려면 아래 특성을 사용합니다. 

//

// 참고: 

//   (*) 키를 지정하지 않으면 어셈블리에 서명할 수 없습니다.

//   (*) KeyName은

//       사용자 컴퓨터의 CSP(암호화 서비스 공급자)에

//        설치되어 있는 키를 참조하고 KeyFile은 키가 포함된 파일을

//        참조합니다.

//   (*) KeyFile과 KeyName 값을 모두 지정하면 

//       다음과 같은 프로세스가 발생합니다.

//       (1) CSP에 KeyName이 있으면 해당 키가 사용됩니다.

//       (2) KeyName은 없고, KeyFile이 있으면 

//           KeyFile의 키가 CSP에 설치되어 사용됩니다.

//   (*) sn.exe(강력한 이름 유틸리티)를 사용하면 KeyFile을 만들 수 있습니다.

//        KeyFile을 지정하는 경우

//       KeyFile의 위치는 %Project Directory%\obj\<configuration>의 프로젝트 출력 디렉터리 위치를 기준으로 하는 상대 위치이어야 합니다.

//       예를 들어, KeyFile이 프로젝트 디렉터리에 있는 경우

//       AssemblyKeyFile 특성을 

//       [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]로 지정합니다.

//   (*) 서명 연기는 고급 옵션입니다.

//       이 옵션에 대한 자세한 내용은 Microsoft .NET Framework 설명서를 참조하십시오.

//

[assembly: AssemblyDelaySign(false)]

[assembly: AssemblyKeyFile("")]

[assembly: AssemblyKeyName("")]

 

 

 

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

using System;

using System.Threading;

 

class SimpleThread

{

public void SimpleMethod()

{

Random RandomNumber = new Random();

for (int i=0;i<3;i++)

{

Console.WriteLine(i+" "+Thread.CurrentThread.Name);

Thread.Sleep(RandomNumber.Next(1,5)*1000);

}

Console.WriteLine("DONE! "+Thread.CurrentThread.Name);

}

}

 

class Exercise

{

public static void Main()

{

SimpleThread obj = new SimpleThread();

ThreadStart ts = new ThreadStart(obj.SimpleMethod);

Thread worker1 = new Thread(ts);

Thread worker2 = new Thread(ts);

worker1.Name = "Apple";

worker2.Name = "Orange";

worker1.Start();

worker2.Start();

}

}

 

 

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

using System.Reflection;

using System.Runtime.CompilerServices;

 

//

// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 제어됩니다. 

// 어셈블리와 관련된 정보를 수정하려면

// 이 특성 값을 변경하십시오.

//

[assembly: AssemblyTitle("")]

[assembly: AssemblyDescription("")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("")]

[assembly: AssemblyCopyright("")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]

 

//

// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.

//

//      주 버전

//      부 버전 

//      빌드 번호

//      수정 번호

//

// 모든 값을 지정하거나

// 아래와 같이 '*'를 사용하여 수정 번호 및 빌드 번호가 자동으로 지정되도록 할 수 있습니다.

 

[assembly: AssemblyVersion("1.0.*")]

 

//

// 어셈블리에 서명하려면 사용할 키를 지정해야 합니다. 어셈블리 서명에 대한 자세한 내용은 

// Microsoft .NET Framework 설명서를 참조하십시오.

//

// 서명하는 데 사용할 키를 제어하려면 아래 특성을 사용합니다. 

//

// 참고: 

//   (*) 키를 지정하지 않으면 어셈블리에 서명할 수 없습니다.

//   (*) KeyName은

//       사용자 컴퓨터의 CSP(암호화 서비스 공급자)에

//        설치되어 있는 키를 참조하고 KeyFile은 키가 포함된 파일을

//        참조합니다.

//   (*) KeyFile과 KeyName 값을 모두 지정하면 

//       다음과 같은 프로세스가 발생합니다.

//       (1) CSP에 KeyName이 있으면 해당 키가 사용됩니다.

//       (2) KeyName은 없고, KeyFile이 있으면 

//           KeyFile의 키가 CSP에 설치되어 사용됩니다.

//   (*) sn.exe(강력한 이름 유틸리티)를 사용하면 KeyFile을 만들 수 있습니다.

//        KeyFile을 지정하는 경우

//       KeyFile의 위치는 %Project Directory%\obj\<configuration>의 프로젝트 출력 디렉터리 위치를 기준으로 하는 상대 위치이어야 합니다.

//       예를 들어, KeyFile이 프로젝트 디렉터리에 있는 경우

//       AssemblyKeyFile 특성을 

//       [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]로 지정합니다.

//   (*) 서명 연기는 고급 옵션입니다.

//       이 옵션에 대한 자세한 내용은 Microsoft .NET Framework 설명서를 참조하십시오.

//

[assembly: AssemblyDelaySign(false)]

[assembly: AssemblyKeyFile("")]

[assembly: AssemblyKeyName("")]

 

 

 

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

using System; 

using System.Threading; 

 

public class MainThreadTest 

public static void Main () 

Thread th = Thread.CurrentThread; 

Console.WriteLine("1. 현재 Thread HashCode:", th.GetHashCode()); 

Console.WriteLine("2. 스레드의 이름:"+ th.Name); 

Console.WriteLine("3. 스레드의 CurrentCulture:"+ th.CurrentCulture); 

Console.WriteLine("4. 스레드의 우선순위:"+ th.Priority); 

Console.WriteLine("5. 스레드의 상태:"+ th.ThreadState); 

Console.WriteLine("6. 스레드의 IsBackground:"+ th.IsBackground); 

}

}

 

 

 

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

using System.Reflection;

using System.Runtime.CompilerServices;

 

//

// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 제어됩니다. 

// 어셈블리와 관련된 정보를 수정하려면

// 이 특성 값을 변경하십시오.

//

[assembly: AssemblyTitle("")]

[assembly: AssemblyDescription("")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("")]

[assembly: AssemblyCopyright("")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]

 

//

// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.

//

//      주 버전

//      부 버전 

//      빌드 번호

//      수정 번호

//

// 모든 값을 지정하거나

// 아래와 같이 '*'를 사용하여 수정 번호 및 빌드 번호가 자동으로 지정되도록 할 수 있습니다.

 

[assembly: AssemblyVersion("1.0.*")]

 

//

// 어셈블리에 서명하려면 사용할 키를 지정해야 합니다. 어셈블리 서명에 대한 자세한 내용은 

// Microsoft .NET Framework 설명서를 참조하십시오.

//

// 서명하는 데 사용할 키를 제어하려면 아래 특성을 사용합니다. 

//

// 참고: 

//   (*) 키를 지정하지 않으면 어셈블리에 서명할 수 없습니다.

//   (*) KeyName은

//       사용자 컴퓨터의 CSP(암호화 서비스 공급자)에

//        설치되어 있는 키를 참조하고 KeyFile은 키가 포함된 파일을

//        참조합니다.

//   (*) KeyFile과 KeyName 값을 모두 지정하면 

//       다음과 같은 프로세스가 발생합니다.

//       (1) CSP에 KeyName이 있으면 해당 키가 사용됩니다.

//       (2) KeyName은 없고, KeyFile이 있으면 

//           KeyFile의 키가 CSP에 설치되어 사용됩니다.

//   (*) sn.exe(강력한 이름 유틸리티)를 사용하면 KeyFile을 만들 수 있습니다.

//        KeyFile을 지정하는 경우

//       KeyFile의 위치는 %Project Directory%\obj\<configuration>의 프로젝트 출력 디렉터리 위치를 기준으로 하는 상대 위치이어야 합니다.

//       예를 들어, KeyFile이 프로젝트 디렉터리에 있는 경우

//       AssemblyKeyFile 특성을 

//       [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]로 지정합니다.

//   (*) 서명 연기는 고급 옵션입니다.

//       이 옵션에 대한 자세한 내용은 Microsoft .NET Framework 설명서를 참조하십시오.

//

[assembly: AssemblyDelaySign(false)]

[assembly: AssemblyKeyFile("")]

[assembly: AssemblyKeyName("")]

 

 

 

제목
태그 쓰기 목록
위로