티스토리 뷰
전에꺼 수정본..
서버에 소켓이 열려있어야 클라이언트에서 접속 가능..
서버에서 소켓이 열려있지 않았을 때 클라이언트에서 연결 시도 할 경우의 에러 처리 구문 아직 없음.
*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.Data.SqlClient;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
using ServerDll;
namespace ServerTest
{
public partial class Form1 : Form
{
private Socket ServerSocket;
private Socket ClientSocket;
private NetworkStream stream;
private StreamReader reader = null;
private StreamWriter writer = null;
private Thread ServerThread;
private SqlCommand Comm;
private string qry = "SELECT tel FROM solever1 WHERE name = @readBuf";
private Serverdll con;
public Form1()
{
InitializeComponent();
//Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
con = new Serverdll();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (ServerSocket != null)
{
MessageBox.Show("현재 서버 가동중");
return;
}
ServerThread = new Thread(new ThreadStart(thread_run));
ServerThread.IsBackground = true;
ServerThread.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void thread_run()
{
ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(IPAddress.Loopback, 35000);
ServerSocket.Bind(ep);
ServerSocket.Listen(10);
Check();
}
public void Check()
{
try
{
ClientSocket = ServerSocket.Accept();
stream = new NetworkStream(ClientSocket);
reader = new StreamReader(stream);
writer = new StreamWriter(stream);
while (true)
{
string readBuf = reader.ReadLine();
if (readBuf != null && readBuf.Length > 0)
{
Comm = new SqlCommand(qry, con.returnCon());
Comm.Parameters.Add("@readBuf", SqlDbType.VarChar, 12);
Comm.Parameters["@readBuf"].Value = readBuf;
SqlDataReader sdr = Comm.ExecuteReader();
while (sdr.Read())
{
writer.WriteLine(sdr.GetString(0));
writer.Flush();
}
sdr.Close();
}
else
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (writer != null)
writer.Close();
if (reader != null)
reader.Close();
if (ClientSocket != null)
ClientSocket.Close();
if (ServerSocket != null)
{
ServerSocket.Close();
ServerThread.Abort();
}
}
}
}
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.IO;
using System.Threading;
namespace ClientTest
{
public partial class Form1 : Form
{
private Socket ClientSocket;
private Thread ClientThread;
private NetworkStream stream;
private StreamReader reader = null;
private StreamWriter writer = null;
public Form1()
{
InitializeComponent();
}
/*public void thread()
{
Thread ClientThread = new Thread(new ThreadStart(thread_run));
ClientThread.IsBackground = true;
ClientThread.Start();
}*/
private void connect()
{
ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(IPAddress.Loopback, 35000);
ClientSocket.Connect(ep);
}
private void button1_Click(object sender, EventArgs e)
{
try
{
stream = new NetworkStream(ClientSocket);
reader = new StreamReader(stream);
writer = new StreamWriter(stream);
string writeBuf = textBox1.Text;
writer.WriteLine(writeBuf);
writer.Flush();
string readBuf = reader.ReadLine();
textBox2.Text = readBuf;
reader.Close();
writer.Close();
stream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
if (ClientSocket != null)
{
MessageBox.Show("현재 연결중");
return;
}
ClientThread = new Thread(new ThreadStart(connect));
ClientThread.IsBackground = true;
ClientThread.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (writer != null)
writer.Close();
if (reader != null)
reader.Close();
if (ClientSocket != null)
ClientSocket.Close();
if (ClientSocket != null)
{
ClientSocket.Close();
ClientThread.Abort();
}
}
}
}
'C#' 카테고리의 다른 글
Form 하나 닫히면서 다른 폼(자식폼) 생성하기. (0) | 2012.08.06 |
---|---|
C# 소켓 서버 클라이언트를 통한 DB 검색 (3) (1) | 2012.07.13 |
C# 소켓 서버와 클라이언트를 통한 DB 검색 (0) | 2012.07.12 |
dataGridView에 DB Select만 불러오기 (0) | 2012.07.09 |
listview column 클릭 시 정렬하기 (0) | 2012.07.05 |