Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
13 / 13 / 1
Регистрация: 14.12.2010
Сообщений: 316
1

Клиент сервер(Sokets UDP) на разных языках

18.11.2011, 21:50. Показов 3194. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли сделать сервер на Delphi а клиент на С++ ???
Вот мой код сервера(Delphi) и клиента (С++).
Почему у меня не работает? не подскажите профессионалы?)))

Код
[DELPHI]program Server1;

{$APPTYPE CONSOLE}
uses
 Winsock2,
  Windows,
  SysUtils;


var
ServerState:string[32];      // статус сервера
ServerIp   :AnsiString;      // 256 ип клиента
ServerReadCommand:AnsiString;      // 512
 int:integer;    // для сокетов
 sock_adress_size:integer; // размер для сокетов
 buff:array[0..7] of char;

 inf: TWSADATA;
socks: integer;
sockaddr: TSockAddr;




begin
  try


  Writeln('Connecting...');
    WSAStartup(MAKEWORD(2,0),inf);
  socks:=socket(AF_INET,SOCK_DGRAM,0);
  sockaddr.sin_family := AF_INET;
  sockaddr.sin_port := htons(5001);
  sockaddr.sin_addr.S_addr := htonl(INADDR_ANY);
  bind(socks,@sockaddr,16);
  listen(socks,3);
    { TODO -oUser -cConsole Main : Insert code here }

while true do

begin
  //  socks:=accept(socks,sockaddr,i);
int:=recvfrom(socks,buff,sizeof(buff),0,sockaddr, sock_adress_size);
         Sleep(250);
          Writeln(buff);
end;
  readln;

  except
    on E:Exception do
     begin
     closesocket(0);
		 WSACleanup();
     Sleep(500);
     readln;
     end;
  end;
end.[/DELPHI]
//-----------------------------------------------------
Код клиента (С++)
//-----------------------------------------------------
Код
[CPP]// пример простого UDP-клиента
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>

#define PORT 5001
#define SERVERADDR "127.0.0.1"


int main(int argc, char* argv[])
{
	char buff[10*1014];
	char buff2[7]="777.07";
	printf("UDP DEMO Client\nType quit to quit\n");

	// Шаг 1 - иницилизация библиотеки Winsocks
	if (WSAStartup(0x202,(WSADATA *)&buff[0]))
	{
		printf("WSAStartup error: %d\n",
			WSAGetLastError());
		return -1;
	}

	// Шаг 2 - открытие сокета
	SOCKET my_sock=socket(AF_INET, SOCK_DGRAM, 0);
	if (my_sock==INVALID_SOCKET)
	{
		printf("socket() error: %d\n",WSAGetLastError());
		WSACleanup();
		return -1;
	}

	// Шаг 3 - обмен сообщений с сервером
	HOSTENT *hst;
	sockaddr_in dest_addr;

	dest_addr.sin_family=AF_INET;
	dest_addr.sin_port=htons(PORT);

	// определение IP-адреса узла
	if (inet_addr(SERVERADDR))
		dest_addr.sin_addr.s_addr=inet_addr(SERVERADDR);
	else
		if (hst=gethostbyname(SERVERADDR))
			dest_addr.sin_addr.s_addr=((unsigned long **)
			hst->h_addr_list)[0][0];
		else
		{
			printf("Unknown host: %d\n",WSAGetLastError());
			closesocket(my_sock);
			WSACleanup();
			return -1;
		}

		while(1)
		{
			// чтение сообщения с клавиатуры

			if (!strcmp(&buff[0],"quit\n")) break;

			fgets(&buff2[7],sizeof(buff)-1,
				stdin);
			printf("count=>%s",&buff2[7]);
                 
			// Передача сообщений на сервер
			sendto(my_sock,&buff2[7],strlen(&buff2[7]),0,
				(sockaddr *) &dest_addr,sizeof(dest_addr));
			
		
		// Прием сообщения с сервера
			sockaddr_in server_addr;
			int server_addr_size=sizeof(server_addr);

			int n=recvfrom(my_sock,&buff[6],sizeof(buff)-1,0,
				(sockaddr *) &server_addr, &server_addr_size);

			if (n==SOCKET_ERROR)
			{
				printf("recvfrom() error:"\
					"%d\n",WSAGetLastError());
				closesocket(my_sock);
				WSACleanup();
				return -1;
			}

			buff[n]=0;

			// Вывод принятого с сервера сообщения на экран
		}

		// шаг последний - выход
		closesocket(my_sock);
		WSACleanup();

		return 0;
}

[/CPP]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2011, 21:50
Ответы с готовыми решениями:

UDP Клиент Сервер
Есть простой UDP клиент и UDP эхо-сервер. Вот исходники: Сервер: #include &quot;stdafx.h&quot;...

UDP клиент сервер
Помогите пожалуйста сделать &quot;Получение по запросу имени компьютера, физического адреса,...

Клиент-Сервер отправка сообщений по udp
Здравствуйте уважаемые форумчане. Я раньше не работал с сетьями. Поэтому обращаюсь за помощью. Мне...

Сервер принимает пакеты если клиент указывает неверный порт получателя UDP.
Вот возникла проблема не могу понять почему сервер принимает пакеты если клиент указывает неверный...

2
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
18.11.2011, 22:36 2
Возможно ли сделать сервер на Delphi а клиент на С++ ???
Можно
Можно даже на разных архитектурах
0
13 / 13 / 1
Регистрация: 14.12.2010
Сообщений: 316
19.11.2011, 07:54  [ТС] 3
А не подскажите почему у меня тогда не работает?Примерно такой же клиент работал с сервером написанным на c++ а эти приложения ОБА выходят в сеть сервер на порту 5001 НО НЕ ВИДЯТ ДРУГА как и должен а клиент почем-то на другом хотя стоит в коде тоже 5001.Помогите пожалуйста.
0
19.11.2011, 07:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2011, 07:54
Помогаю со студенческими работами здесь

Нужен ли хостинг или что то еще, для работы программ клиент-сервер(TCP/IP) на разных компьютерах?
Нужен ли хостинг или что то еще, для работы программ клиент-сервер(TCP/IP) на разных компьютерах?

UDP Клиент-Сервер
На этот раз мне надо реализовать клиент-серверное приложение использую UDP. В интернете прочитал,...

UDP Клиент-Сервер
Здравствуйте! Написала два приложения: клиент и сервер. Обработала, чтобы клиент мог отправлять...

Клиент-Сервер на UDP. Работающий
Всем привет, я в C# недавно. Есть готовый клиент сервер на ЮДП. Отправляет только одно сообщение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru