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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 13:21   #1
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию ClientSocket, ServerSocket - проблема с передачей сообщения

Не могу понять в чем проблема. Передаю серверу сообщение, он его принимает и выдает в поле Memo кракозябры, помогите, по возможности объясните пожалуйста. На скрине показаны эти кракозябры.

Вот код:
Client
Код:
unit ClientUnit;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;
 
type
  TForm1 = class(TForm)
    Client: TClientSocket;
    log: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 Client.Socket.SendText(Edit1.Text);
end;
 
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
 Log.Lines.Add(Socket.ReceiveText);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 Client.Open;
 client.close;
end;
end.
Server
Код:
unit ServerUnit;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;
 
type
  TForm1 = class(TForm)
    Server: TServerSocket;
    Log: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure ServerClientConnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Server.active:=true
end;
 
procedure TForm1.ServerClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
 Log.Lines.Add('Подключился клиент с IP адресом '+Socket.RemoteAddress);
end;
 
 
procedure TForm1.ServerClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 Log.Lines.Add('Клиент '+socket.RemoteAddress+' отключился от сервера.');
end;
 
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
 str:string;
 i:integer;
begin
 str:=Socket.ReceiveText;
 log.Lines.Add(str);
 
   for i:= 0 to Server.Socket.ActiveConnections -1 do
      Server.Socket.Connections[i].SendText(str);
 
end;
 
end.
Изображения
Тип файла: jpg 1.JPG (18.8 Кб, 87 просмотров)
Вложения
Тип файла: rar Client.rar (212.5 Кб, 9 просмотров)
Тип файла: rar Server.rar (212.3 Кб, 8 просмотров)
Karateka вне форума Ответить с цитированием
Старый 25.05.2013, 14:49   #2
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Мучаюсь, мучаюсь ничего не помогает. Кстати даже когда пределываю чужие программы клиент-сервер, тоже самое и с ними происходит, хотя они в начале работают нормально и передают текст, и правильно его отображают. Вот еще скрин:
Изображения
Тип файла: jpg 2.JPG (19.0 Кб, 86 просмотров)
Karateka вне форума Ответить с цитированием
Старый 25.05.2013, 15:49   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

string попробуй заменить на ansistring.
А вообще рекомендуется INDY ибо TServerSocket слегка устарел. Его даже как-то из Делфи пытались вывести, но видимо облом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.05.2013, 18:19   #4
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
string попробуй заменить на ansistring.
А вообще рекомендуется INDY ибо TServerSocket слегка устарел. Его даже как-то из Делфи пытались вывести, но видимо облом.
Заменил на ansistring, всё-равно не помогает. Думаю может переустановить RAD Studio.
Karateka вне форума Ответить с цитированием
Старый 25.05.2013, 22:44   #5
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от Karateka Посмотреть сообщение
Заменил на ansistring, всё-равно не помогает. Думаю может переустановить RAD Studio.
Не поможет, IMHO.
Delphi_ProGer вне форума Ответить с цитированием
Старый 26.05.2013, 16:20   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Попробуй компоненты Indy: idTCPClient и idTCPServer
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 27.05.2013, 10:24   #7
Karateka
Пользователь
 
Регистрация: 25.05.2013
Сообщений: 33
По умолчанию

Все-таки решил удалить RAD 2009, заменил на RAD XE2. Все работает без глюков. Тему можно закрывать. Всем спасибо, что удили внимание моей проблеме))
Karateka вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ServerSocket/ClientSocket OffRoad Работа с сетью в Delphi 1 15.05.2011 17:15
ClientSocket и ServerSocket. Vaigard Работа с сетью в Delphi 7 19.02.2011 08:56
проблема с передачей сообщения (текста) в чужое приложение (клиент Garena) Z3rique Общие вопросы Delphi 6 10.02.2011 10:08
ClientSocket и ServerSocket Hacker19_90 Работа с сетью в Delphi 1 23.03.2010 01:17
ServerSocket и ClientSocket Sensizu Работа с сетью в Delphi 5 30.12.2009 00:09