Итак, я хотел создать приложение для чата на C #, я смотрел видео об этом (https://www.youtube.com/watch?v=ve2LX1tOwIM),. Я полностью скопировал код на данный момент, но когда я запускаю сервер, подключаю клиента к серверу и отправляюсообщение от клиента приводит к тому, что оно бесконечно отправляет сообщение как клиенту, так и серверу. Я не уверен, почему это происходит, поскольку код в точности такой, как показано в видео, которое я смотрел. Вы можете увидеть это в моем репозитории.
Если вы хотите увидеть код: Клиент:
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;
using SimpleTCP;
namespace Client
{
public partial class ClientForm : Form
{
SimpleTcpClient client;
public ClientForm()
{
InitializeComponent();
}
private void ClientForm_Load(object sender, EventArgs e)
{
client = new SimpleTcpClient();
client.StringEncoder = Encoding.UTF8;
client.DataReceived += Client_DataReceived;
}
private void Client_DataReceived(Object sender, SimpleTCP.Message e)
{
txtStatus.Invoke((MethodInvoker)delegate ()
{
txtStatus.Text += e.MessageString;
e.ReplyLine(String.Format("You: {0}", e.MessageString));
});
}
private void SendMessageInput_Click(object sender, EventArgs e)
{
client.WriteLine(MessageInput.Text);
}
private void StartInput_Click(object sender, EventArgs e)
{
StartInput.Enabled = false;
client.Connect(HostInput.Text, Convert.ToInt32(PortInput.Text));
}
}
}
А это сервер:
using System;
using System.Net;
using System.Text;
using System.Windows.Forms;
using SimpleTCP;
namespace HyperChat
{
public partial class ServerForm : Form
{
SimpleTcpServer server;
public ServerForm()
{
InitializeComponent();
}
private void ServerForm_Load(object sender, EventArgs e)
{
server = new SimpleTcpServer();
server.Delimiter = 0x13;
server.StringEncoder = Encoding.UTF8;
server.DataReceived += Server_DataReceived;
}
private void Server_DataReceived(object sender, SimpleTCP.Message e)
{
txtStatus.Invoke((MethodInvoker)delegate ()
{
txtStatus.Text += e.MessageString;
e.ReplyLine(String.Format("You: {0}", e.MessageString));
});
}
private void StartButton_Click(object sender, EventArgs e)
{
txtStatus.Text += "Server Started...";
IPAddress ip = IPAddress.Parse(hostInput.Text);
server.Start(ip, Convert.ToInt32(portInput.Text));
StartButton.Enabled = false;
}
private void StopButton_Click(object sender, EventArgs e)
{
if (server.IsStarted)
{
server.Stop();
}
}
}
}
Я был бы очень признателен за получениепомогите, я попытался испортить свой код, но он не работал, я хочу упомянуть, что в видео они сказали, что вам нужно подключиться, чтобы получить IP, который вы хотите подключить, используя:
System.Net.IPAddress ip = new System.Net.IPAddress(long.Parse(txtHost.Text))
Но это дает ошибки, и вам действительно нужно сделать следующее:
System.Net.IPAddress ip = System.Net.IPAddress.Parse(hostInput.Text);
Я ожидаю, что сервер отправит сообщение так, как должно, но по какой-то причине это не так.спасибо за помощьч это.Спасибо.