Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C# TcpClient/TcpListener Переподключение!

куки мен Ученик (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();
}
}
}
Голосование за лучший ответ
Партагеноссе старина Мюллер Просветленный (47529) 4 года назад
Вот ты как программист подсчитай теоретическую возможность что здесь и сейчас сидит спец по си?
Сергей Зайцев Мудрец (11055) 4 года назад
Лучше выложи скрины с кодом, очень тяжело читать..
Похожие вопросы