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

C# winforms Как выполнять какие либо действия на client с помощью сокетов ?

CAPTCHAK I Ученик (110), закрыт 2 года назад
C# winforms Как выполнять какие либо действия на client с помощью сокетов ?
Лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (274360) 2 года назад
 using System; 
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;

public partial class ClientForm : Form
{
private Socket _clientSocket;
private byte[] _buffer;

public ClientForm()
{
InitializeComponent();
}

private void ConnectToServerButton_Click(object sender, EventArgs e)
{
// Connect to the server
_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(IPAddressTextBox.Text), int.Parse(PortTextBox.Text));
_clientSocket.BeginConnect(endPoint, ConnectCallback, null);
}

private void ConnectCallback(IAsyncResult ar)
{
try
{
_clientSocket.EndConnect(ar);
ConnectToServerButton.Enabled = false;
SendMessageButton.Enabled = true;
_buffer = new byte[1024];
_clientSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, ReceiveCallback, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void ReceiveCallback(IAsyncResult ar)
{
try
{
int received = _clientSocket.EndReceive(ar);
if (received == 0)
{
throw new Exception("Connection closed");
}
string message = Encoding.UTF8.GetString(_buffer, 0, received);
ChatTextBox.AppendText(message + Environment.NewLine);
_buffer = new byte[1024];
_clientSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, ReceiveCallback, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void SendMessageButton_Click(object sender, EventArgs e)
{
try
{
byte[] data = Encoding.UTF8.GetBytes(MessageTextBox.Text);
_clientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, SendCallback, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void SendCallback(IAsyncResult ar)
{
try
{
_clientSocket.EndSend(ar);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Остальные ответы
Никита Профи (925) 2 года назад
C# Winforms используется для создания графического интерфейса пользователя. Вы можете использовать сокеты, чтобы осуществлять взаимодействие между клиентом и сервером.

Чтобы выполнить действия на стороне клиента с помощью сокетов, вам нужно:

Создать экземпляр класса Socket для клиентской части
Подключиться к серверу с помощью метода Connect
Отправлять данные на сервер с помощью метода Send
Получать данные от сервера с помощью метода Receive
Вы можете найти много примеров кода, демонстрирующих, как использовать сокеты в C# Winforms, в сети.
Похожие вопросы