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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2011, 22:37   #1
Dima DDM
Форумчанин
 
Аватар для Dima DDM
 
Регистрация: 09.11.2010
Сообщений: 134
Вопрос UDP обмен данными

Я сделал TCP клиент и сервер.Они нормально обмениваются данными друг с другом,но под скажите как сделать UDP клиент и сервер чтобы они могли обмениваться данными.Ниже представленные мои наработки,но по какой-то причине данные не доходят от клиента к серверу ((( Хотя оба они выходят в интернет!Подскажите в чем ошибка\недочет.

Клиент

Код:
program Test;

{$APPTYPE CONSOLE}

uses
  SysUtils,Windows,
  WinSock;

// сокеты

var// сокеты   Server:TInaddr;
inf: TWSADATA;
 Server:TInaddr;
Port:integer;  // порт
s:string;
socks,SizeClietnAddr: integer;
sockaddr,client_addr: TSockAddr;
begin
Port:=5001;
s:='Строка текста';
SizeClietnAddr:=SizeOF(client_addr);
  Server.s_addr:=inet_addr(PChar('127.0.0.1'));
  WSAStartup(MAKEWORD(2,0),inf);
  socks:=socket(AF_INET,SOCK_DGRAM,0);
  sockaddr.sin_family := AF_INET;
  sockaddr.sin_port := htons(Port);
  sockaddr.sin_addr := Server;
  connect(socks,sockaddr,sizeof(sockaddr));

 if connect(socks,sockaddr,sizeof(sockaddr))<>-1 then
begin
while true do
begin
  readln(s);
  sendTo(socks,s,Length(s),0,client_addr,SizeClietnAddr);

end;
Сервер

Код:
Procedure AlphaConnect;
var
inf:TWSADATA; // для инициализации
UserSocket,i,SizeClietnAddr,ACC,AccData:integer;     // наш сокет
sockaddr,client_addr: TSockAddr;
Port:integer;  // порт
   s:string;
begin
Port:=5001;
SizeClietnAddr:=SizeOf(client_addr);
WSAStartup(MAKEWORD(2,0),inf);
UserSocket:=socket(AF_INET,SOCK_DGRAM,0);

sockaddr.sin_family := AF_INET;
sockaddr.sin_port := htons(Port);
sockaddr.sin_addr.S_addr := htonl(INADDR_ANY);

bind(UserSocket,@sockaddr,sizeof(sockaddr));
listen(UserSocket,MaxPlayers);

// принимаем подключение

i:=sizeof(sockaddr);
// ACC:=accept(UserSocket,sockaddr,i);

while true do
begin

 if ACC<>-1 then

begin
AccData:=recvfrom(ACC,s,Length(s),0,client_addr,SizeClietnAddr);
Sleep(100);

Writeln(s);

end;
end;
end;
Может я какй-то не так переписал в TCP на UDP ?
http://ddmsite.ucoz.ru Мой сайт.
Бесплатный Блокировщик рекламы
http://download.adguard.ru/d/1656/adguardInstaller.exe
Dima DDM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен байтами через Udp Dima DDM Работа с сетью в Delphi 8 03.01.2011 04:19
Обмен данными saggy Работа с сетью в Delphi 1 14.02.2010 13:10
Обмен данными между С++ и С# Stellvertreter Общие вопросы C/C++ 0 14.11.2008 14:18
Обмен данными по сети Altera Работа с сетью в Delphi 2 23.02.2008 00:13
обмен данными с сервером BioS Работа с сетью в Delphi 15 12.02.2007 15:32