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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
8-1082823744
Pa5ha
2004-04-24 20:22
2004.07.18
DrawIndexedPrimitives &amp; Baga


4-1086615887
Sirakuz
2004-06-07 17:44
2004.07.18
Reference Count и LoadLibrary


3-1087986820
Piter
2004-06-23 14:33
2004.07.18
Перенос данных из одной базы в другую


6-1084958538
Darik
2004-05-19 13:22
2004.07.18
Как отправить файл по E-mail?


1-1088765919
Popovich A.
2004-07-02 14:58
2004.07.18
Вопросик по TImage