Итак, я видел несколько вопросов по Stackoverflow, которые имеют к этому отношение, но (а) ни один из них не решил мою проблему, и (б) они не делали то, что я делал в большинстве из них. Итак, у меня есть клиентское и серверное приложения Windows Form, и я просто хочу подключить их. Вот код для сервера:
private void connectButton_Click(object sender, EventArgs e) {
// Attempt to connect
try {
IPAddress ip = IPAddress.Parse(ipBox.Text);
TcpListener listener = new TcpListener(ip, 8000);
listener.Start();
messageBox.Text = "Server started! Waiting for connection...";
messageBox.Refresh();
Socket socket = listener.AcceptSocket();
messageBox.Text += "\nConnection accepted from " + socket.RemoteEndPoint;
}
catch (Exception eg) {
messageBox.Text = Convert.ToString(eg);
}
}
Все это прекрасно работает, я бы хотел больше рассказать о получении IP и так далее, но это довольно просто, и я уже знаю, что это работает. Поэтому, когда вы запускаете это и нажимаете кнопку подключения, он в основном отправляет сообщение, что он запущен. Вот код для клиента:
private void connectButton_Click(object sender, EventArgs e) {
try {
TcpClient tcp = new TcpClient();
messageBox.Text = "Connecting....";
messageBox.Refresh();
tcp.Connect(ipBox.Text, 8001);
messageBox.Text += "\nConnected!";
messageBox.Refresh();
}
catch (Exception eg) {
messageBox.Text += Convert.ToString(eg);
messageBox.Refresh();
}
}
Это посылает, что это соединяется, и затем несколько секунд спустя ошибка . Я слышал, это потому, что сервер не слушает (я уже пропустил программу через брандмауэр), но у меня это на сервере: Socket socket = listener.AcceptSocket();
. Как я могу это исправить?