Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2019, 20:07   #1
Welarate
Новичок
Джуниор
 
Регистрация: 22.02.2019
Сообщений: 1
По умолчанию c# и работа с сетью

Имеется код,что необходимо исправить чтобы при нажатии 1 из 3 кнопок клиент отправлял строку или число на сервер для дальнейшей его обработки? заранее благодарен

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace KNB
{
public partial class Client : Form
{
public Client()
{
InitializeComponent();
}

Network myServer = new Network();

private void button1_Click(object sender, EventArgs e)
{
myServer.sendMessage = new StringBuilder(1);
}

private void button2_Click(object sender, EventArgs e)
{
myServer.sendMessage = new StringBuilder(2);
}

private void button3_Click(object sender, EventArgs e)
{
myServer.sendMessage = new StringBuilder(3);
}

private void Client_Load(object sender, EventArgs e)
{

}

private void button4_Click(object sender, EventArgs e)
{
int port = int.Parse(textBox2.Text);
string IP = textBox1.Text;

bool ConnecttoServer = myServer.ConnectToServer(port, IP);
checkBox1.Checked = ConnecttoServer;

if (ConnecttoServer == true)
{
myServer.ClientServerTalk();
}
}

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{

}
private void timer1_Tick(object sender, EventArgs e)
{

}
}
}




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;

namespace KNB
{
class Network
{
public int Player_1=0;
public int Player_2=0;

public bool serverState = false;
TcpClient client;

public StringBuilder sendMessage = new StringBuilder();
public StringBuilder reciveMessage = new StringBuilder();

void ResiveTalk()
{
StringBuilder str = new StringBuilder();

while (client.Connected)
{
str = new StringBuilder(SendRecive("", false));
if (client.Connected)
{
str = new StringBuilder(SendRecive("",false)) ;
if (str.Length > 0)
{
reciveMessage = str;
MessageBox.Show("123");
str.Clear();
} else
{

}
}
}

}
void SendTask()
{
while (client.Connected)
{
if (sendMessage.Length > 0)
{
SendRecive(sendMessage.ToString(), true);
MessageBox.Show(sendMessage.ToStrin g());
sendMessage.Clear();
}
}
}

public void ClientServerTalk()
{
Task TalkSendTask = new Task(SendTask);
Task TalkReciveTask = new Task(ResiveTalk);

TalkReciveTask.Start();
TalkSendTask.Start();
}


public string Byte_convert(byte[] Resive)
{
int buf = Resive.Length;
String R = "";
int F = 0;

for (int i = 1; i < buf; i++) if (Resive[i] != 0) F++;
R = System.Text.Encoding.ASCII.GetStrin g(Resive);
R = R.Substring(0, F);
return R;
}

public string SendRecive(string text, bool send)
{
string otvet = "";
byte[] o = new byte[text.Length];
try
{
switch (send)
{
case true: o = System.Text.Encoding.ASCII.GetBytes (text);
client.Client.Send(o);
break;
case false:
o = new byte[256];

client.Client.Receive(o);
otvet = Byte_convert(o);
break;
}
}
catch
{

}

return otvet;
}

void Lisen()
{

serverState = true;
IPAddress localAdress = IPAddress.Parse("0.0.0.0");
int Port = 911;

TcpListener liss = new TcpListener(localAdress, Port);
liss.Start();

while (serverState)
{
client = liss.AcceptTcpClient();
ClientServerTalk();
}
}

public void RunServer()
{
serverState = true;
Task S = new Task(Lisen);
S.Start();
}

public bool ConnectToServer(int ServerPort,string ServerIPAdress)
{
try
{
client = new TcpClient();
client.Connect(IPAddress.Parse(Serv erIPAdress), ServerPort);
return client.Connected;
}
catch(Exception ex)
{
reciveMessage = new StringBuilder(ex.Message);
}
return false;
}
}
}
Welarate вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с сетью Алиби Помощь студентам 3 02.12.2016 10:10
Работа с сетью Arsenx777 Visual C++ 5 16.07.2011 11:17
Работа с сетью на C# Jonaitis Общие вопросы .NET 8 13.12.2010 18:37
Работа с сетью Silentdi Работа с сетью в Delphi 0 24.09.2010 15:01
C++ работа с сетью. n4ela Общие вопросы C/C++ 3 27.01.2010 15:31