Me3ter
دوشنبه 16 اردیبهشت 1392, 23:20 عصر
سلام دوستان...
من یه برنامه دارم که چند کاربره است یه قسمتش با سوکته
وقتی یک کاربر در برنامه مثلا یک رکورد را حذف میکنه بعد از حذف، عدد 1 به یک سرور ارسال میشه که سرور 1 رو به همه کلاینتها یی که بهش وصلند میفرسته، کلاینتها هم که با یک نخ دائم در حال رسیو هستند اگر 1 دریافت کنند رکوردهارو از بانک سلکت میکنند
این سند و رسیوا همه درست انجام میشن ولی وقتی کلاینت 1 رو دریافت کرد و سلکت کرد این اررور ها پیش میاد
از این خط اررور میگره که کارش اینه وقتی کاربر یوزر پس زد اگر درست بود فرم اصلی رو باز میکنه 103794
یا انکنه این اررور رخ نمیده و همه چیز هنگام حذف درست انجام میشه ولی وقتی میخای ثبت جدید کنی برنامه هنگ میکنه، کدهای حذف و سند و رسیو رو میزارم که دوستان راحت تر راهنمایی کنند
این پروسه از لود شدن فرم، وصل شدن به سرور و رسیو
public FormAsli(string[] Roluser, string user)
{
InitializeComponent();
this.Roluser = Roluser;
this.user = user;
authenticaion(Roluser);
CheckForIllegalCrossThreadCalls = false;
binCmb();
Databind(Bilit.Select(0));
}
private void FormAsli_Load(object sender, EventArgs e)
{
mnkarbar.Text = " خوش امدید کاربر: " + user;
connect();
}
private void connect()
{
// string server = txt_IPServer.Text;
// int serverPort = int.Parse(txt_Port.Text);
try
{
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint serverEndPoint = new IPEndPoint(Dns.Resolve("127.0.0.1").AddressList[0], 9898);
sock.Connect(serverEndPoint);
MessageBox.Show("Connected to server. ");
backgroundWorker1.RunWorkerAsync();
Thread node = new Thread(new ThreadStart(StartRecive));
node.Start();
}
catch (Exception ex)
{
}
}
private void StartRecive()
{
if (sock != null)
{
while (true)
{
try
{
buffer = new byte[2024];
data = null;
len = sock.Receive(buffer);
data = Encoding.ASCII.GetString(buffer, 0, len);
if (data == "1")
{
try
{
Databind(Bilit.Select(0));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// Exit loop if server indicates shutdown
if (len == 0)
{
sock.Close();
// break;
}
}
catch
{
}
}
}
else
{
// wl("CQQWCQWCQ");
}
}
private void send()
{
try
{
buffer = new byte[2024];
buffer = Encoding.ASCII.GetBytes("1");
sock.Send(buffer);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
اینم حذف و سند
BLL.Bilit bilit = new BLL.Bilit();
if (MessageBox.Show("خذف شود؟", "هشدار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
int ret = bilit.Delete(Id, user);
if (ret > 0)
{
send();
// Databind(Bilit.Select(0));
}
else
MessageBox.Show("حذف با مشکل مواجه شد");
}
من که واقعا نمیدونم عیب از کجاست
من یه برنامه دارم که چند کاربره است یه قسمتش با سوکته
وقتی یک کاربر در برنامه مثلا یک رکورد را حذف میکنه بعد از حذف، عدد 1 به یک سرور ارسال میشه که سرور 1 رو به همه کلاینتها یی که بهش وصلند میفرسته، کلاینتها هم که با یک نخ دائم در حال رسیو هستند اگر 1 دریافت کنند رکوردهارو از بانک سلکت میکنند
این سند و رسیوا همه درست انجام میشن ولی وقتی کلاینت 1 رو دریافت کرد و سلکت کرد این اررور ها پیش میاد
از این خط اررور میگره که کارش اینه وقتی کاربر یوزر پس زد اگر درست بود فرم اصلی رو باز میکنه 103794
یا انکنه این اررور رخ نمیده و همه چیز هنگام حذف درست انجام میشه ولی وقتی میخای ثبت جدید کنی برنامه هنگ میکنه، کدهای حذف و سند و رسیو رو میزارم که دوستان راحت تر راهنمایی کنند
این پروسه از لود شدن فرم، وصل شدن به سرور و رسیو
public FormAsli(string[] Roluser, string user)
{
InitializeComponent();
this.Roluser = Roluser;
this.user = user;
authenticaion(Roluser);
CheckForIllegalCrossThreadCalls = false;
binCmb();
Databind(Bilit.Select(0));
}
private void FormAsli_Load(object sender, EventArgs e)
{
mnkarbar.Text = " خوش امدید کاربر: " + user;
connect();
}
private void connect()
{
// string server = txt_IPServer.Text;
// int serverPort = int.Parse(txt_Port.Text);
try
{
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint serverEndPoint = new IPEndPoint(Dns.Resolve("127.0.0.1").AddressList[0], 9898);
sock.Connect(serverEndPoint);
MessageBox.Show("Connected to server. ");
backgroundWorker1.RunWorkerAsync();
Thread node = new Thread(new ThreadStart(StartRecive));
node.Start();
}
catch (Exception ex)
{
}
}
private void StartRecive()
{
if (sock != null)
{
while (true)
{
try
{
buffer = new byte[2024];
data = null;
len = sock.Receive(buffer);
data = Encoding.ASCII.GetString(buffer, 0, len);
if (data == "1")
{
try
{
Databind(Bilit.Select(0));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// Exit loop if server indicates shutdown
if (len == 0)
{
sock.Close();
// break;
}
}
catch
{
}
}
}
else
{
// wl("CQQWCQWCQ");
}
}
private void send()
{
try
{
buffer = new byte[2024];
buffer = Encoding.ASCII.GetBytes("1");
sock.Send(buffer);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
اینم حذف و سند
BLL.Bilit bilit = new BLL.Bilit();
if (MessageBox.Show("خذف شود؟", "هشدار", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
int ret = bilit.Delete(Id, user);
if (ret > 0)
{
send();
// Databind(Bilit.Select(0));
}
else
MessageBox.Show("حذف با مشکل مواجه شد");
}
من که واقعا نمیدونم عیب از کجاست