куки мен
Ученик
(126),
на голосовании
4 года назад
Привет, я не опытный программист итд, помогите сделать переподключение к серверу после отключение от сервера, он меня больше не соединяет, и не принимает смс Заранее все спасибо
###Сервер### namespace Serversonsole { class Program { public class Connection { public TcpClient cl; public void Work() { NetworkStream NWS = cl.GetStream(); BinaryReader R = new BinaryReader(NWS); //принятие BinaryWriter W = new BinaryWriter(NWS); //отправка // тут что - то ваше //т. е. тут собственно команды для работы с клиентом Console.WriteLine("клиент подключился"); } } static void Main(string[] args) { int port = 11000; TcpListener l = new TcpListener(port); //и на нем у нас висит сервер l.Start(); //серер запущен l.Server.Listen(5); Console.WriteLine("Север Запущен..."); //уведомили об этом while (true) { TcpClient cl = l.AcceptTcpClient(); Connection c = new Connection(); c.cl = cl; Thread t = new Thread(new ThreadStart(c.Work)); t.IsBackground = false; t.Start(); c.Work(); while(true) { StringBuilder builder = new StringBuilder(); byte[] data = new byte[256]; int bytes = 0; try { bytes = cl.Client.Receive(data); builder.Append(Encoding.UTF8.GetString(data, 0, bytes)); string str = builder.ToString(); Console.WriteLine(str); if (str.StartsWith("Disconnect")) { Console.WriteLine("клиент Отключился"); cl.Close(); } } catch { } } } } } } ### Клиент ### namespace ClientConsole { public partial class Form1 : Form { public Form1() { InitializeComponent(); } TcpClient client = new TcpClient();
NetworkStream networkStream; StreamReader streamReader; StreamWriter streamWriter; public int port = 11000; //умолчание public string adres = "127.0.0.1"; //умолчание string result; async private void button1_Click(object sender, EventArgs e) { reg(); } private void reg() { try { //создадим сокетное подключение для общения с сервером //client.Client.Connect(adres, port); //client.BeginConnect(adres, port, new AsyncCallback(ConnectCallback), client); label1.Text = result; client.Connect(adres, port); //IP адрес сервера и порт на котором он висит NetworkStream NWS = client.GetStream(); BinaryReader R = new BinaryReader(NWS); //поток для принятия данных BinaryWriter W = new BinaryWriter(NWS); //поток для отправки данных //ну и тут ваше что-то } catch { } } public void ConnectCallback(IAsyncResult ar) { result = "Подключение успешно!"; try { TcpClient client = (TcpClient)ar.AsyncState; client.Client.EndConnect(ar); } catch { result = "Подключение провалено!"; client.Close(); client.Client.Close(); } } private void button2_Click(object sender, EventArgs e) { client.Client.Send(Encoding.UTF8.GetBytes(textBox1.Text)); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { client.Client.Send(Encoding.UTF8.GetBytes("Disconnect")); client.Close(); } } }
после отключение от сервера, он меня больше не соединяет, и не принимает смс
Заранее все спасибо
###Сервер###
namespace Serversonsole
{
class Program
{
public class Connection
{
public TcpClient cl;
public void Work()
{
NetworkStream NWS = cl.GetStream();
BinaryReader R = new BinaryReader(NWS); //принятие
BinaryWriter W = new BinaryWriter(NWS); //отправка
// тут что - то ваше
//т. е. тут собственно команды для работы с клиентом
Console.WriteLine("клиент подключился");
}
}
static void Main(string[] args)
{
int port = 11000;
TcpListener l = new TcpListener(port); //и на нем у нас висит сервер
l.Start(); //серер запущен
l.Server.Listen(5);
Console.WriteLine("Север Запущен..."); //уведомили об этом
while (true)
{
TcpClient cl = l.AcceptTcpClient();
Connection c = new Connection();
c.cl = cl;
Thread t = new Thread(new ThreadStart(c.Work));
t.IsBackground = false;
t.Start();
c.Work();
while(true)
{
StringBuilder builder = new StringBuilder();
byte[] data = new byte[256];
int bytes = 0;
try
{
bytes = cl.Client.Receive(data);
builder.Append(Encoding.UTF8.GetString(data, 0, bytes));
string str = builder.ToString();
Console.WriteLine(str);
if (str.StartsWith("Disconnect")) { Console.WriteLine("клиент Отключился"); cl.Close(); }
}
catch
{
}
}
}
}
}
}
### Клиент ###
namespace ClientConsole
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TcpClient client = new TcpClient();
NetworkStream networkStream;
StreamReader streamReader;
StreamWriter streamWriter;
public int port = 11000; //умолчание
public string adres = "127.0.0.1"; //умолчание
string result;
async private void button1_Click(object sender, EventArgs e)
{
reg();
}
private void reg()
{
try
{
//создадим сокетное подключение для общения с сервером
//client.Client.Connect(adres, port);
//client.BeginConnect(adres, port, new AsyncCallback(ConnectCallback), client);
label1.Text = result;
client.Connect(adres, port); //IP адрес сервера и порт на котором он висит
NetworkStream NWS = client.GetStream();
BinaryReader R = new BinaryReader(NWS); //поток для принятия данных
BinaryWriter W = new BinaryWriter(NWS); //поток для отправки данных
//ну и тут ваше что-то
}
catch
{
}
}
public void ConnectCallback(IAsyncResult ar)
{
result = "Подключение успешно!";
try
{
TcpClient client = (TcpClient)ar.AsyncState;
client.Client.EndConnect(ar);
}
catch
{
result = "Подключение провалено!";
client.Close();
client.Client.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
client.Client.Send(Encoding.UTF8.GetBytes(textBox1.Text));
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
client.Client.Send(Encoding.UTF8.GetBytes("Disconnect"));
client.Close();
}
}
}