Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
Dot   (2005-11-12 00:58) [0]

Уважаемые Мастера.
помогите пожалуйста студенту кодом.
как на  (c) конкретный(ого) IP послать/принять простой текст?
С использованием winsock.
Инициализация сокета мне уже известн, сам механизм приема/отправки нет =(


 
Eraser ©   (2005-11-12 01:11) [1]


> Dot   (12.11.05 00:58)

Советую использовать готовые решения, типа Indy. Отпавку текста там можно организовать в 3 команды, а приём в 1.


 
Dot   (2005-11-12 01:33) [2]

спасибо за совет. но я не по своей воле же делаю. Лабы в универе


 
Delphi   (2005-11-12 12:22) [3]

Примерно так:

Послать:

const
 S: String = "Text message !";
begin
 if Send(My_Socket, PChar( S )^, Length(S), 0) = SOCKET_ERROR then
   ShowMessage("Ошибка при отправке !");


Принять:

var
 Buf: array [0..4096] of Char;
begin
 if Recv(My_Socket, Buf, SizeOf(Buf), 0) = SOCKET_ERROR then
   ShowMessage("Ошибка при получении !")
 else
   ShowMessage(Buf);


 
Dot   (2005-11-13 10:21) [4]

Delphi   (12.11.05 12:22) [3]
Спасибо. Но если можно полностью код приведи пожалуйста, с инициализацией сокета.


 
Dot   (2005-11-13 11:39) [5]

Немного додумал сам однако остается вне грани моего понимания следующее.

Итак вот клиент.

-----------------
var
Sock: TSocket;
procedure TForm1.Button1Click(Sender: TObject);
var
WSAData: TWSAData;
Addr: sockaddr_in;
begin
WSAStartup( $0101, WSAData );
Sock := Socket( PF_INET, SOCK_STREAM, IPPROTO_IP );

with Addr do
begin
sin_family := PF_INET;
sin_port := htons( 12345 );
sin_addr.S_addr := inet_addr( "127.0.0.1" );
end;

if Connect( Sock, Addr, SizeOf( Addr ) ) = SOCKET_ERROR then
Button2.Click;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
CloseSocket( Sock );
WSACleanup;
Form1.Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
const
S: String = "Text message !";
begin
if Send(Sock, PChar( S )^, Length(S), 0) = SOCKET_ERROR then
  ShowMessage("Ошибка при отправке !");

end;

-----------------
Все отсылает нормально исправно

Теперь вопрос про сервер.
Как организовать цикл, дабы он слушал порт и в случае если клиент ему что то послал то выводил посланное на экран.
ибо

---------------
procedure TForm1.Button1Click(Sender: TObject);
var
WSAData: TWSAData;
Buf: array [0..4096] of Char;
Addr: sockaddr_in;
i: integer;              
begin
WSAStartup( $0101, WSAData );
Sock := Socket( PF_INET, SOCK_STREAM, IPPROTO_IP );
i:=1;
with Addr do
begin
sin_family := PF_INET;
sin_port := htons( 12345 );
sin_addr.S_addr := INADDR_ANY;
end;

Bind( Sock, Addr, SizeOf( Addr ) );
Listen( Sock, SOMAXCONN );

if Recv(Sock, Buf, SizeOf(Buf), 0) = SOCKET_ERROR then
  ShowMessage("Ошибка при получении !")
else
  ShowMessage(Buf);
end;

---------------
Постоянно вылазает сообщение Ошибка при получении!


 
Delphi_is_cool ©   (2005-11-14 00:14) [6]

Dot >
Оставь e-mail, могу помочь исходниками.


 
Digitman ©   (2005-11-15 10:25) [7]

http://book.itep.ru/7/sock_71.htm

читать про ф-цию accept() до полного просветления


 
atruhin ©   (2005-11-15 14:51) [8]

А еще почитать о значении возвращаемом send и recv, а то двойку получишь.



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

Форум: "Сети";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.031 c
15-1138992676
БарЛог
2006-02-03 21:51
2006.02.26
Помогите скачать mp3


2-1139777700
Norfolk
2006-02-12 23:55
2006.02.26
Обращиение к глобальным переменным из процедуры


2-1139152598
Alex_Korn
2006-02-05 18:16
2006.02.26
Сохранение TStrings в PByte


1-1138178023
Начинающий10
2006-01-25 11:33
2006.02.26
WM_PAINT, WM_ERASEBKGND


2-1139402563
R.O.O.T
2006-02-08 15:42
2006.02.26
Как добавить поле в таблицу базы Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский