Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2009, 08:17   #1
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию клиент сервер

Объясните пожалуйста как подается запрос на удаленный сервер в си++/clr
dampirik вне форума Ответить с цитированием
Старый 06.10.2009, 11:17   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

создаешь сокет, указываешь ему ип и хост удаленного сервера и пишешь в него. объяснил?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 06.10.2009, 13:09   #3
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Кусок программы на C# (если речь вообще идет о TCP).
Код:
			TcpClient Client = null;
			NetworkStream Stream = null;

			try
			{
				Client = new TcpClient ("localhost", 80);
				Stream = Client.GetStream ();
				byte[] Buff = Encoding.ASCII.GetBytes ("qwe");


				Stream.Write (Buff, 0, Buff.Length);
				Console.WriteLine ("Sent: " + Encoding.ASCII.GetString (Buff));

				Buff = new byte[256];

				int Length = Stream.Read (Buff, 0, Buff.Length);
				Console.WriteLine ("Received: " + Encoding.ASCII.GetString (Buff));
			}
			catch (Exception exc)
			{
				Console.WriteLine (exc.Message);
			}
			finally
			{
				if (Stream != null)
					Stream.Close();
				if (Client != null)
					Client.Close();
				Console.ReadKey ();
			}
Кстати, не советую использовать C++/CLR. См. здесь.
ds.Dante вне форума Ответить с цитированием
Старый 06.10.2009, 17:01   #4
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Цитата:
если речь вообще идет о TCP
А можно с пояснениями...если не сложно... и как я понимаю вместо локал хоста можно указывать именно айпи сервера?
В любом случаи спасибо) хоть есть что у мсдн спрашивать))))
dampirik вне форума Ответить с цитированием
Старый 06.10.2009, 18:04   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Код:
TcpClient Client = null;
NetworkStream Stream = null;
// Если сразу инициализировать переменные, может возникнуть exception.
// Если объявить их в блоке try, то в блоках catch и finally они окажутся за пределами зоны видимости
// Поэтому объявление - сдесь, инициализация - дальше.

try
{
	Client = new TcpClient ("localhost", 80);
// localhost - это синоним 127.0.0.1, можно ввести любой IP.
// Второй аргумент - номер порта (например, на 80-м работают браузеры, на 21-м - FTP)

	Stream = Client.GetStream ();
// Stream - это оболочка для работы с портом как с потоком.
// Подробнее объяснить не могу, т. к. сам плохо разбираюсь в этом.

	byte[] Buff = Encoding.ASCII.GetBytes ("qwe");
// Данные, которые мы отправляем на сервер.

	Stream.Write (Buff, 0, Buff.Length);
	Console.WriteLine ("Sent: " + Encoding.ASCII.GetString (Buff));
// Отсылаем


	Buff = new byte[256];
// Думаю, на C++/CLR эта строка будет выглядеть страшновато. ;)

	int Length = Stream.Read (Buff, 0, Buff.Length);
	Console.WriteLine ("Received: " + Encoding.ASCII.GetString (Buff));
// Допустим, наш сервер при приеме сразу возвращает ответ. Принимаем его.
}
catch (Exception exc)
{
	Console.WriteLine (exc.Message);
// Если ошибка
}
finally
{
	if (Stream != null)
		Stream.Close();
	if (Client != null)
		Client.Close();
// Закрываем в обратном порядке - сначала - поток, потом - порт.
	Console.ReadKey ();
}
Для проверки понадобится сервер. Вот код сервера на C#.
Код:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TCPServer
{
	public static void Main ()
	{
		byte[] Buffrer = new byte [256];
		string Data = null;
		TcpListener Server = null;

		try
		{
			Server = new TcpListener (IPAddress.Parse ("127.0.0.1"), 80);
			Server.Start();

			Console.Write ("Waiting for a client...");
			TcpClient Client = Server.AcceptTcpClient();
			Console.WriteLine (" connected.");
			NetworkStream Stream = Client.GetStream();

			int RecivedLength;

			while (true)
			{
				RecivedLength = Stream.Read (Buffrer, 0, Buffrer.Length);
				if (RecivedLength == 0)
					break;
				Console.WriteLine ("Recived: " + Encoding.ASCII.GetString (Buffrer, 0, RecivedLength));
				Stream.Write (Buffrer, 0, RecivedLength);
				Console.WriteLine ("Echo sent.");
			}

			Client.Close ();
		}
		catch (SocketException exc)
		{
			Console.WriteLine ("Error: " + exc.Message);
		}
		finally
		{
			Server.Stop ();
			Console.WriteLine ("Press any key...");
			Console.ReadKey ();
		}
	}
}
ds.Dante вне форума Ответить с цитированием
Старый 07.10.2009, 17:23   #6
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Громаднейшее спасибо, буду разбираться)
dampirik вне форума Ответить с цитированием
Старый 07.10.2009, 23:51   #7
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

ой ой ой, вот это пример классный, у меня правда вопрос и сори что я влазию в чужую тему, но он у меня есть, для этого можно проджэкт и консоль аппликэйшион создавать на VS8? (для шарпа)
Olejik вне форума Ответить с цитированием
Старый 08.10.2009, 09:17   #8
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Да. Надо просто засунуть этот код в функцию Main.
ds.Dante вне форума Ответить с цитированием
Старый 11.10.2009, 15:24   #9
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

а еще вопросик,а в С++ это можно реализовать как нибуть?
Olejik вне форума Ответить с цитированием
Старый 22.10.2009, 14:49   #10
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Написал на с++/CLR если нужно выложу...
Спасибо ds.Dante помог... пошел дальше медитировать)))
dampirik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент и сервер SL1CK Работа с сетью в Delphi 8 27.08.2009 01:30
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
Клиент-сервер-клиент Кронос Работа с сетью в Delphi 3 24.08.2007 07:57
клиент сервер Oksana1988 Фриланс 3 10.04.2007 12:12