2015. 1. 15. 16:29
C# with TCP/IP
프로그램 설명
서버와 클라이언트를 각각 쓰레드를 이용한 멀티프로그램으로 예제를 만들어 보았습니다.
실행 후
메시지 전송 후
프로그램 작성 순서
1. 소켓/쓰레드과 관련한 네임스페이스를 서버/클라이언트 모두에 포함 시킵니다.
using System.Net; using System.Net.Sockets; using System.Threading; using System.Diagnostics;
2. 서버 프로그램
private void btnStart_Click(object sender, EventArgs e) { Thread tcpServerRunThread = new Thread(new ThreadStart(TcpServerRun)); tcpServerRunThread.IsBackground = true; tcpServerRunThread.Start(); } private void TcpServerRun() { TcpListener tcpListener = new TcpListener(IPAddress.Any, 5004); tcpListener.Start(); updateUI("Listening"); updateUI("==========================================="); while(true) { TcpClient client = tcpListener.AcceptTcpClient(); updateUI("Connected"); Thread tcpHandlerThread = new Thread(new ParameterizedThreadStart(tcpHandler)); tcpHandlerThread.Start(client); } } private void tcpHandler(object client) { TcpClient mClient = client as TcpClient; NetworkStream stream = mClient.GetStream(); byte[] message = new byte[1024]; int byteRead = stream.Read(message, 0, message.Length); updateUI("New Message = " + Encoding.UTF8.GetString(message, 0, byteRead)); updateUI(""); stream.Close(); mClient.Close(); } private void updateUI(string s) { Action del = delegate() { textBox1.AppendText(s + System.Environment.NewLine); }; Invoke(del); }
3. 클라이언트 프로그램
private void btnSend_Click(object sender, EventArgs e) { Thread mThread = new Thread(new ThreadStart(SendAsClient)); mThread.Start(); } private void SendAsClient() { TcpClient client = new TcpClient(); client.Connect(IPAddress.Parse(textServerIP.Text), Convert.ToInt32(textServerPort.Text)); updateUI("Connected"); NetworkStream stream = client.GetStream(); string sendData = textMessage.Text; byte[] msg = new byte[256]; msg = Encoding.UTF8.GetBytes(sendData); stream.Write(msg, 0, msg.Length); updateUI(string.Format("send data : {0}", sendData)); updateUI(string.Format("{0} bytes sent", msg.Length )); stream.Close(); client.Close(); } private void updateUI(string s) { Func<int> del = delegate() { textBox1.AppendText(s + System.Environment.NewLine); return 0; }; Invoke(del); }
'C# with TCP/IP' 카테고리의 다른 글
[Program C#]구조체를 이용한 소켓통신1 - 마샬링 방법 - 윈도우 버전 (0) | 2015.01.20 |
---|---|
[Program C#]구조체를 이용한 소켓통신1 - 마샬링 방법 - 콘솔 버전 (0) | 2015.01.17 |
[Program C#]TcpListener - TcpClient msdn 예제 - 윈도우 버전 (1) | 2015.01.13 |
[Program C#]TcpListener - TcpClient msdn 예제 - 콘솔 버전 (0) | 2015.01.09 |
[Program C#]Socket 통신 - Receiving Data/Handling Disconnection (0) | 2015.01.06 |