|
|
|
|
Автор:
|
Anonymous
|
|
Тема:
|
Socet
|
|
Дата:
|
7/7/2005 3:22:00 PM
|
Есть форма при нажатии 1-кнопки,создается поток,который слушает канал.
Если к нему кто-то connect ,то принимается сообщение.Проблема в том,что
когда передается новое сообщения у меня на работе он его принимает,а дома
показывает старые данные
(по точке останова на функции tcpListener.AcceptTcpClient() показывает просто
форму со старыми данными).
Ещё при нажатии 2-кнопки(должна закрывать приложение)форма закрывается,апроцесс остается в памяти. Помогите разовраться.
Код:
private Thread th=null;
private bool bContinue=false;
private TcpClient tcpClient;
private TcpListener tcpListener;
private NetworkStream stream;
public ListViewItem itemLV = new ListViewItem();
private void button1_Click(object sender, System.EventArgs e)
{
string remoteHost="localhost";
if(th==null)
{
if(this.textBox2.Text=="")
{
tcpListener=new TcpListener
(Dns.Resolve(Dns.GetHostName()).AddressList[0],11000);
}
else
{
tcpListener=new TcpListener
(Dns.Resolve(Dns.GetHostName()).AddressList[0],System.Convert.ToInt32(this.textBox2.Text));
}
tcpListener.Start();
bContinue=true;
th=new Thread(new ThreadStart(this.Listening));
th.Start();
this.button1.Text="Start Listening...";
//th=null;
}
}
private void Listening()
{
Byte[] buffer=new byte[1];
int g=0;
int bytes=0;
string tmpMes="";
string tmpMes1="";
string oneBate="";
while(bContinue)
{
try
{
tcpClient=tcpListener.AcceptTcpClient();
this.stream=this.tcpClient.GetStream();
}
catch(Exception er)
{
MessageBox.Show(er.Message.ToString());
}
while(stream.DataAvailable)
{
bytes=stream.Read(buffer,0,buffer.Length);
System.Text.Encoding encAsciiRu = System.Tеxt.Encoding.GetEncoding("ibm866");
System.Text.Encoding encWinRu = System.Text.Encoding.GetEncoding(1251);
oneBate=encWinRu.GetString(buffer,0,bytes);
if(oneBate=="/")
{
if(g>4) g=0;
this.listView1.Items.Clear();
try
{
this.itemLV.SubItems[g].Text=tmpMes1;
}
catch (Exception er)
{
MessageBox.Show(er.Message.ToString());
}
this.listView1.Items.Add(this.itemLV);
g++;
tmpMes1=" ";
}
else
{
tmpMes1+=oneBate;
tmpMes+=oneBate;
}
}
}
}
private void button2_Click(object sender, System.EventArgs e)
{
this.Close();
}
|
|
|
|