Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

вопрос по сокету   Найти похожие ветки 

 
kibork ©   (2004-06-20 22:44) [0]

кто знает точно?* Отправляем текст по сокету...
например Socket.SendText("hello to all");
сокет запомнит длинну текста или нет?* Ну тоисть если потом послать еще текст до того как клиент прочитал это то будут два куска или один?*


 
Cardinal ©   (2004-06-20 22:57) [1]

>Ну тоисть если потом послать еще текст до того как клиент >прочитал это то будут два куска или один?*

Точно сказать не могу, но, наверное, это будет один кусок (receivetext, кажется).


 
Rouse_ ©   (2004-06-20 23:24) [2]

Нет не запомнит, это Stream и ни что иное... разделять сам должен...


 
Кирюша   (2004-06-21 01:35) [3]

Удалено модератором


 
Кирюша   (2004-06-21 01:37) [4]

Удалено модератором


 
Кирюша   (2004-06-21 01:38) [5]

Удалено модератором


 
Кирюша   (2004-06-21 01:39) [6]

Удалено модератором


 
Кирюша   (2004-06-21 01:41) [7]

Удалено модератором
Примечание: 3 дня R/O


 
Amoral ©   (2004-06-21 05:11) [8]

<<Кирюша   (21.06.04 01:41) [7]

пошли куда подальше Маст дай с его глюками и вернитесь к тихому и доброму ДОсу

>>Это тебя надо послать куда подальше

//

<<kibork ©   (20.06.04 22:44)

Ну тоисть если потом послать еще текст до того как клиент прочитал это то будут два куска или один?*

>>При каждой отправке "текста" через сокет методом Socket.SendText(msg:string); будет посылаться только msg.


 
Digitman ©   (2004-06-21 09:14) [9]


> если потом послать еще текст до того как клиент прочитал
> это то будут два куска или один?


на этот счет не следует делать никаких предположений - "кусков" может быть и один, и два, и косой десяток ..

важно то, что последовательность отправляемых данных в точности соответствует последовательности принимаемых данных

иными словами, если передатчик выполняет, например

sendtext("ABCD")
sendtext("EFGH")

то приемник может получить и

AB
CDE
F
GH

и

AB
C
D
E
FG
H

и любую иную комбинацию "кусков"


временная последовательность передачи данных в точности соответствует временной последовательности приема передаваемых данных


 
AngelOKES   (2004-06-22 08:06) [10]

Удалено модератором


 
Digitman ©   (2004-06-22 08:12) [11]


> AngelOKES


функция winsock.accept() при успешном выполнении записывает по адресу, переданному 2-м параметром, данные со структурой TSockAddr, одно из полей которой содержит IP-адрес клиента


 
AngelOKES   (2004-06-22 08:32) [12]

Можно поподробнее


 
Digitman ©   (2004-06-22 08:42) [13]


> AngelOKES   (22.06.04 08:32) [12]


куда уж подробнее ..

открываешь справку для ф-ции accept(), читаешь описание параметров, далее открываешь модуль winsock.pas, ищешь декларацию структуры TSockAddr -  и все как на ладони ...


 
AngelOKES   (2004-06-22 10:19) [14]

Спасибо за ответ, но я нашел способ попроще:

IpClient:=Socket.RemoteAddress; Возвращает IP клиента
IpServer:=Socket.LocalAddress;  Возвращает IP сервера


 
Digitman ©   (2004-06-22 10:27) [15]


> AngelOKES


ну ты странный товарисч, однако ...


> Подскажите как сервер



> нашел способ попроще


ты считаешь, что все вокруг должны с полуслова догадываться о том, ЧТО ты подразумеваешь под "сервером" ? Или для тебя не существует никакого иного "сервера", кроме как TServerSocket-компонент ?


 
AngelOKES   (2004-06-22 11:04) [16]

Удалено модератором


 
McZim ©   (2004-06-28 12:13) [17]

вот тебе нормальный сендер по отсылке мессаг по сокетам, но и он не запомнит:

procedure TForm1.Button1Click(Sender: TObject);
begin
{Если соединение уже установлено - прерываем его.}
 if ClientSocket1.Active then begin
   ClientSocket1.Close;
   Exit; {...и выходим из обработчика}
end;
{Присваиваем свойствам Host и Port нужные значения}
 ClientSocket1.Host := Edit1.Text;
 ClientSocket1.Port := StrToInt(Edit2.Text);
 {Пытаемся открыть сокет и установить соединение}
 ClientSocket1.Open;

end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
{Как только произошло соединение - посылаем приветствие}
 Socket.SendText("Hello!");
 ListBox1.Items.Add("< Hello!");
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
begin
       {Если пришло сообщение - добавляем его в ListBox}
 ListBox1.Items.Add("> "+Socket.ReceiveText);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
{Нажата кнопка - посылаем текст из третьего TEdit}
 ClientSocket1.Socket.SendText(Edit3.Text);
 ListBox1.Items.Add("< "+Edit3.Text);



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.033 c
4-1089840854
MIGUR
2004-07-15 01:34
2004.08.29
Как отследить нажатия левой и правой кнопки мыши


3-1091788451
Самовар
2004-08-06 14:34
2004.08.29
Удаление пустых записей в базе


1-1092639039
alexts
2004-08-16 10:50
2004.08.29
О PGP...


6-1088353563
alexa
2004-06-27 20:26
2004.08.29
Передача файлов


3-1090002748
Mister
2004-07-16 22:32
2004.08.29
1 или 2 млн. записей