Не удается подключится к серверу. В чем может быть ошибка? - C#
Формулировка задачи:
Написал клиент-сервер для передачи файлов. С сетями имею дело в первый раз. В предыдущей версии данной программы разбил на куски прослушку и отправку файла в сервере, и подключение к серверу и прием файла в клиенте. Подключение осуществлялось, но передача файлов нет. В данной версии, не осуществляется даже подключение. Опыта в данном деле нет, поэтому если кто-то сталкивался с подобными задачами и укажет на ошибку, буду очень благодарен.
Сервер
Клиент
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Threading;
using System.Net;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public string filename;
TcpClient handler;
TcpListener sListener;
public Form1()
{
InitializeComponent();
}
//Выбор файла и извлечение его имени
private void browseButton_Click(object sender, EventArgs e)
{
using (OpenFileDialog selectfile = new OpenFileDialog())
{
if (selectfile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
LogBox.Text = "Файл выбран";
filename = selectfile.FileName;
}
}
}
private void Transfer_Click(object sender, EventArgs e)
{
// Создаем конечную сетевую точку для прослушивания любого IP и портом 11000
IPEndPoint myEndpoint = new IPEndPoint(IPAddress.Any, 11000);
try
{
sListener = new TcpListener(myEndpoint);
//Начинаем прослушивание, очередь которого в 100 заявок
sListener.Start(100);
LogBox.Text = Environment.NewLine + "Создаем сокет";
//Обрабатываем запросы подключения к серверу, если имеются принимаем и начинаем работу с сокетом handler
while (true)
{
Application.DoEvents();
if (sListener.Pending())
{
handler = sListener.AcceptTcpClient();
sListener.Stop();
LogBox.Text = Environment.NewLine + "Клиент подключен";
}
}
}
catch
{
LogBox.Text = Environment.NewLine + "Не удалось подключиться к клиенту";
}
if (handler.Connected)
{
//Переводим данные файла в универсальный формат чтения и записи, после в двоичный и получаем данные на клиентский совет
using (FileStream inputStream = File.OpenRead(filename))
using (NetworkStream outputStream = handler.GetStream())
using (BinaryWriter writer = new BinaryWriter(outputStream))
{
long lenght = inputStream.Length;
long totalBytes = 0;
int readBytes = 0;
byte[] buffer = new byte[2048];
writer.Write(Path.GetFileName(filename));
writer.Write(lenght);
do
{
readBytes = inputStream.Read(buffer, 0, buffer.Length);
outputStream.Write(buffer, 0, readBytes);
totalBytes += readBytes;
} while (handler.Connected && totalBytes < lenght);
}
handler.Close();
}
}
private void Cancel_Click(object sender, EventArgs e)
{
//Если подключен клиентской сокет, отключаем его
if (handler.Connected) handler.Close();
LogBox.Text = Environment.NewLine+"Передача отменена";
}
}
}using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
using System.Net;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
TcpClient client;
string folder;
public Form1()
{
InitializeComponent();
}
private void Cancel_Click(object sender, EventArgs e)
{
if (client.Connected) client.Close();
}
private void ReceiveFile_Click(object sender, EventArgs e)
{
IPHostEntry localMachineInfo = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint myEndpoint = new IPEndPoint(localMachineInfo.AddressList[0], 11000);
client = new TcpClient(myEndpoint);
try
{
client.Connect(myEndpoint);
LogBox.Text = Environment.NewLine + "Подключение к серверу";
}
catch
{
LogBox.Text = Environment.NewLine + "Не удалось подключится к серверу";
}
if (client.Connected)
{
using (NetworkStream inputStream = client.GetStream())
using (BinaryReader reader = new BinaryReader(inputStream))
{
string filename = reader.ReadString();
long lenght = reader.ReadInt64();
using (FileStream outputStream = File.Open(Path.Combine(folder, filename), FileMode.Create))
{
long totalBytes = 0;
int readBytes = 0;
byte[] buffer = new byte[2048];
do
{
readBytes = inputStream.Read(buffer, 0, buffer.Length);
outputStream.Write(buffer, 0, readBytes);
totalBytes += readBytes;
} while (client.Connected && totalBytes < lenght);
client.Close();
}
}
}
}
private void BrowseButton_Click(object sender, EventArgs e)
{
using (folderBrowserDialog1 = new FolderBrowserDialog())
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
folder = folderBrowserDialog1.SelectedPath;
textBox2.Text=folderBrowserDialog1.SelectedPath;
}
}
}Решение задачи: «Не удается подключится к серверу. В чем может быть ошибка?»
textual
Листинг программы
using System;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using CommonTransportLibrary;
namespace TestClient
{
class Program
{
static void Main(string[] args)
{
var client = new SocketClient();
client.ConnectEvent += (sender, e) =>
{
Console.WriteLine("Сервер доступен!!!");
using (var networkStream = new NetworkStream(e.Client, FileAccess.ReadWrite))
{
var buffer = new byte[5];
networkStream.Read(buffer, 0, 5);
Console.Write("Прием: ");
buffer.ToList().ForEach(x => Console.Write("{0}, ", x));
Console.WriteLine();
networkStream.Write(new byte[] {5, 4, 3, 2, 1}, 0, 5);
Console.WriteLine("Отправка: 5, 4, 3, 2, 1");
Console.ReadLine();
}
};
client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000));
}
}
}