Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по сокетам [D5, Win95/98, WinXP]


osama ©   (2004-05-14 17:53:00) 

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


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;


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

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


Rouse_   (2004-05-20 21:27:00) [2]

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


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


Verg   (2004-05-20 15:12:00) [3]

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


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

И я тоже проверил этот код, и у меня выдается ошибка 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-ов - просто для отладки.


Evgeny V   (2004-05-15 06:50:00) [5]

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо