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

Вниз

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

 
osama   (2004-05-14 17:53) [0]

Подскажите, что тут не правильно?


var
 S: TSocket;
 Return: Longword;
 Addr: TSockAddrIn;

function SendMessage(S: TSocket; var Buf; Count: Integer): Longword;
begin
WinSock.Send(S, Buf, Count, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
S:=WinSock.Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
Addr.sin_family:=PF_INET;
Addr.sin_addr.S_addr:=inet_addr(PChar("127.0.0.1"));
Addr.sin_port:=htons(1024);
Return:=WinSock.Connect(S, Addr, SizeOf(Addr));
Return:=SendMessage(S, Pointer(PChar("000000"))^, 6);
end;


 
osama   (2004-05-14 17:59) [1]

Сообщение должна ловить другая прога - Делфийский Chat (стандарт :). Адрес свой но это не принципиально - на другом айпи тоже не ловит. Что я забыл???


 
Evgeny V ©   (2004-05-15 06:50) [2]

забыл проверить на ошибки, которые возвращают функции и узнать их причину. И еще не вижу WSAStartup ( может ты и делал, но на всякий случай напоминаю) и Addr.sin_family:=PF_INET наверное описка, должно быть AF_INET


 
kalishenko   (2004-05-20 13:44) [3]

И я тоже проверил этот код, и у меня выдается ошибка WSAECONNREFUSED при попытке соединиться, т.е. после вызова connect. В хэлпе написано, что просто попытка соединиться была отклонена. В чем подвох?
Да, привожу немного перереланный код:

var
 WSData: WSAData;
 err_sock: integer;
 S: TSocket;
 Return: Longword;
 Addr: TSockAddrIn;

procedure TForm1.Button1Click(Sender: TObject);
begin
 err_sock := WSAStartup(MAKEWORD(1,1),WSData);
 if err_sock <> 0 then
 begin
   MessageBox(0,"Ошибка в ф-ции WSASturtup!","Ошибка!",MB_OK);
   Halt;
 end
 else
 begin
   S:=Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
   if S <> INVALID_SOCKET then
   begin
     Addr.sin_family:=AF_INET;
     Addr.sin_addr.S_addr:=inet_addr(PChar("127.0.0.1"));
     Addr.sin_port:=htons(1024);
     Return:=Connect(S, Addr, SizeOf(Addr));
     if Return <> 0 then
     begin
       MessageBox(0,"Ошибка в ф-ции Connect!","Ошибка!",MB_OK);
       return := WSAGetLastError;
     end;
   end
   else MessageBox(0,"Ошибка в ф-ции Socket!","Ошибка!",MB_OK);
 end;
 WSACleanup;
end;

P.S.: На счет MessageBox-ов - просто для отладки.


 
Verg ©   (2004-05-20 15:12) [4]

Значит 1024-й порт никто не слушает (нет сервера на 1024)


 
Rouse_ ©   (2004-05-20 21:27) [5]

> [2] Evgeny V ©   (15.05.04 06:50)
Смешно...
 {$EXTERNALSYM PF_INET}
 PF_INET         = AF_INET;


> [3] kalishenko   (20.05.04 13:44)
нормально работает, только что проверил...


 
kalishenko   (2004-05-21 13:40) [6]

>>Rouse_
Да, точно. Просто у меня ни одной службы на этом порту не было запущено.



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

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

Наверх





Память: 0.46 MB
Время: 0.035 c
14-1088197597
Anatoly Podgoretsky
2004-06-26 01:06
2004.07.18
Веселая сегодня пятница


1-1088668047
Галинка
2004-07-01 11:47
2004.07.18
Использование try/exception


4-1086173517
Vlad40
2004-06-02 14:51
2004.07.18
TaskBar Auto hide


1-1089107921
MadGhost
2004-07-06 13:58
2004.07.18
TImage как манипулировать объектами в нем? определение положения.


1-1089108487
raptorus
2004-07-06 14:08
2004.07.18
Покажите как можно создать копию листа EXCEL?





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