Код: Выделить всё
private void ReceiveData(string IP, string PortNo)
{
var port = Convert.ToInt32(PortNo);
IPAddress localAddr = IPAddress.Parse(IP);
server = new TcpListener(localAddr, port);
byte ACK = 6;
byte[] ACK_BUFF = { ACK };
try
{
server.Start();
var bytes = new byte[1024];
string data = string.Empty;
TcpClient client = server.AcceptTcpClient();
using (Stream stream = client.GetStream())
{
while (true)
{
int i;
i = stream.Read(bytes, 0, bytes.Length);
if (i > 0)
{
if (chkBidirectional_NI.Checked)
stream.Write(ACK_BUFF, 0, ACK_BUFF.Length);
string line = Encoding.UTF8.GetString(bytes, 0, i);
if (i > 1)
{
data += line;
}
if (data.IndexOf("L|1|N") > -1)
ReceiveDataSJH(data);
}
}
}
}
catch (SocketException e)
{
MessageBox.Show(e.Message);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private void button1_Click(object sender, EventArgs e)
{
Thread thrNoti = new Thread(() => ReceiveData(txtIPAddress___.Text, txtPortNo___.Text));
thrNoti.Start();
}
Как мне перезагрузить мою программу, чтобы она снова была готова к приему данных?
Обновление:- Возможно, мой вопрос неверен. Основная проблема в том, что моя программа перестает работать после одного переноса.
Обновление2:- Я просмотрел эту тему. Но речь идет об одновременной обработке нескольких соединений. Согласно ответу этого потока, когда я использую (Streamstream = client.GetStream()) внутри анализатора цикла while, говорит, что LIS не отвечает.
Возможно, я ошибаюсь, но я думаю, что когда машина перестает отправлять поток данных, объект удаляется, потому что он используется. Поэтому моя программа через некоторое время перестает получать данные.
Пожалуйста, подскажите, где я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/781 ... t-a-stream
Мобильная версия