Главная страница
    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.037 c
15-1139257654
xayam
2006-02-06 23:27
2006.02.26
Кто-нибудь в WebMoney шарит?


1-1137755539
Alex_KV
2006-01-20 14:12
2006.02.26
сообщения в TabSheet


15-1139307906
ISP
2006-02-07 13:25
2006.02.26
И это радует...


1-1138092905
son_g
2006-01-24 11:55
2006.02.26
По поводу одновременного доступа к файлам


1-1138102595
Guf
2006-01-24 14:36
2006.02.26
Параметры, передоваемые програме из командной строки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский