![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по сокетам [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 (стандарт :). Адрес свой но это не принципиально - на другом айпи тоже не ловит. Что я забыл???