anbujose1983 Ответов: 1

Подключение сервера и передача данных с него с помощью IP-адреса и порта в приложении C# windows


Я хочу подключить сервер, используя IP-адрес и порт, и передать файлы данных буровой установки на мою локальную машину.

Это могут быть интранет-системы или удаленные системы. Пожалуйста, помогите мне. Я только что попробовал этот код, но ошибка как

Возникло исключение: 'System.Net.Sockets.Исключения socketexception в System.dll.

когда он достигает линии--socket.bind(ipEnd);


Пожалуйста, помогите мне. Большое спасибо.

Что я уже пробовал:

string host; int port= 5040; host = Convert.ToString("192.162.0.47");

//IPAddress[] IPs = Dns.GetHostAddresses(host);
IPEndPoint ipEnd = new IPEndPoint(IPAddress.Parse(host), 5040);
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

sock.Bind(ipEnd);
sock.Listen(100);


Socket clientSock = sock.Accept();

byte[] clientData = new byte[1024 * 5000];
string receivedPath = "Projects/";

int receivedBytesLen = clientSock.Receive(clientData);
int fileNameLen = BitConverter.ToInt32(clientData, 0);
string fileName = Encoding.ASCII.GetString(clientData, 4, fileNameLen);
Console.WriteLine("Client:{0} connected & File {1} started received.", clientSock.RemoteEndPoint, fileName);
BinaryWriter bWrite = new BinaryWriter(File.Open(receivedPath + fileName, FileMode.Append)); ;
bWrite.Write(clientData, 4 + fileNameLen, receivedBytesLen - 4 - fileNameLen);
Console.WriteLine("File: {0} received & saved at path: {1}", fileName, receivedPath);

bWrite.Close();
clientSock.Close();
Console.ReadLine();

Greg Utas

У меня нет опыта работы с C#, но с winsock2.h (C/C++) вы должны вызвать WSAStartup, прежде чем делать какие-либо сетевые вещи. Требуется ли что-то подобное в C#?

1 Ответов

Рейтинг:
2

Richard MacCutchan

Вы пытаетесь привязать локальный сокет к удаленному адресу. Затем вы прослушиваете удаленное соединение. Это неверный путь, клиент должен подключиться к серверу и сделать запрос на любые данные, которые вы пытаетесь получить. Видеть Класс Сокетов (System.Net.Sockets) | Microsoft Docs[^] для простого примера.