Не отправляется запрос через сокетное соединение.

  • Автор темы Denisator
  • Дата начала

Denisator

Guest
Не отправляется запрос через сокетное соединение.

Уважаемые, подскажите почему не работает мой скрипт?
Происходит соединение, потом приходит некая информация, далее я пыиаюсь отвравить некий запрос, но запрос не отправляется. Почему?
(скрипт я запускал с локального сервера на компе подключеном к инету)

<?
function connect_tz($server, $zapros){
$data='';
$fp=fsockopen($server, 5190);
$data=fread($fp, 1000);
fputs($fp, $zapros);
fclose($fp);
};
$zapros='<LOGIN l="Left" p="3f4bf3f22355b98a96b0a2935f149235" v="10" />.';
$server="city1.timezero.ru";
$data=connect_tz($server, $zapros);
echo $data;
?>
 

SiMM

Новичок
> далее я пыиаюсь отвравить некий запрос
Что-то я не вижу, где это ты пытаешься отправить запрос.
 

Denisator

Guest
fputs($fp, $zapros);
Извините, а вот это разве не оно?
 

SiMM

Новичок
> $data=fread($fp, 1000);
А вот это что делает ПЕРЕД запросом?
 

Denisator

Guest
Насколько я понимаю читает из дискриптора...
А что то как-то мешает этой функции? :fputs($fp, $zapros);
 

SelenIT

IT-лунатик :)
Denisator, а где в твоей функции возвращаемое значение (return ...)?
 

SiMM

Новичок
> Насколько я понимаю читает из дискриптора...
Что читает? А почему он вообще что-то должен прочитать?

> А что то как-то мешает этой функции? :fputs($fp, $zapros);
Ответь мне на один вопрос - когда ты экзамены сдаёшь - ты вначале получаешь оценку, а потом отвечаешь на вопросы? А что мешает так делать?
 

Denisator

Guest
>а где в твоей функции возвращаемое значение (return ...)?
Точно! действительно вроде ретурн должен быть... косяк.
(а ретурн точно обязательно должен быть что-бы отправить запрос?)

>> Насколько я понимаю читает из дискриптора...
>Что читает? А почему он вообще что-то должен прочитать?
Потому что я я написал
функцию fread(int fp, int lenght) которая читает строку длинной до lenght символов из файла с дискриптором fp
- это по книжке :)

>> А что то как-то мешает этой функции? :fputs($fp, $zapros);
>Ответь мне на один вопрос - когда ты экзамены сдаёшь - ты вначале
>получаешь оценку, а потом отвечаешь на вопросы? А что мешает так делать?
Неа! тут другая ситуация:
1) Я прихожу на экзамен (открывается сесия)
2) Получаю от экзаменатора вопрос (сервер присылает мне некий ключ без какого-либо запроса сразу как только происходит соединение)
3) Я готовлю ответ (кодирую с помощью этого ключа свой пароль)
4) Отвечаю на билет (посылаю кодированый пароль серверу)

Так вот, я сниффером посмотрел что отсылаестя и что приходит, и увидел что ключ от сервака приходит, а запрос уходить не хочет.
 

SelenIT

IT-лунатик :)
ретурн точно обязательно должен быть что-бы отправить запрос?
Нет, но он должен быть, чтобы результат выполнения функции можно было присвоить переменной (насколько мне известно).
 

Denisator

Guest
Неужели я так и не узнаю ответа на свой вопрос?
 

Denisator

Guest
SelenIT ничего мне не разжёвывал, он просто сказал что если я хочу увиедеть что прислал мне сервер мне нужно добавить в функцию return, а на посылку запроса return никак не влияет.

Посмотрел твои ссылки и понял что проблема с тем что переменная $return у меня не глобальная, добавил строчку:
global $zapros, $server, $data;
в начало функции, однако на работу скрипта это никак не повлияло :-( запрос так и не отсылается...
 

SiMM

Новичок
> Посмотрел твои ссылки и понял что проблема с тем что переменная $return у меня не глобальная
Да нихрена ты не понял :( Неужели это так сложно?
PHP:
function connect_tz($server, $zapros=''){
  $fp = fsockopen($server, 5190);
  $data = fread($fp, 1000);
//  fputs($fp, $zapros); // ибо нафиг?
  fclose($fp);
  return $data;
};

$zapros = '<LOGIN l="Left" p="3f4bf3f22355b98a96b0a2935f149235" v="10" />.';
$server = "city1.timezero.ru";
echo connect_tz($server, $zapros);
 

Denisator

Guest
Как это "ибо нафиг?"? А как же информацию серверу посылать?!
 

SiMM

Новичок
> Как это "ибо нафиг?"? А как же информацию серверу посылать?!
А зачем?
 

SelenIT

IT-лунатик :)
Denisator
А что это вообще за сервер такой загадочный? Он точно сохраняет соедиение открытым после отсылки "ключа"?
 

Denisator

Guest
>>А зачем?
Хм-м-м... прямо таки философский вопрос... ;-)
Отсылать информацию серверу нужено для того что-бы сервер знал какую информацию мы от него хотим получить.

SelenIT М-м-м... вот я был уверен что сохраняет. однако после твоего вопроса засомневался...
 

SiMM

Новичок
> Отсылать информацию серверу нужено для того что-бы
> сервер знал какую информацию мы от него хотим получить.
Ты её уже получил. И по твоему скрипту не видно каких либо потуг принять ещё какие-то данные после самого запроса (или протокол такой "дикий"?). Либо ты не знаешь, что такое Cut&Paste, либо морочишь нам голову.
 

Denisator

Guest
>> Отсылать информацию серверу нужено для того что-бы
>> сервер знал какую информацию мы от него хотим получить.
>Ты её уже получил. И по твоему скрипту не видно каких либо
>потуг принять ещё какие-то данные после самого запроса
> (или протокол такой "дикий"?).
Потуг принять ещё какие-то небыло потому что я не хотел пока усложнять скрипт, пришли данные или нет я для верности смотрю сниффером.

>Либо ты не знаешь, что такое Cut&Paste, либо морочишь нам голову.
А тот скрипт который ты показал также не работает: скрипт не хочет заканчивать работать и что-либо показывать .

Add: ДУРЬЯ МОЯ ГОЛОВА! конечно же сервер мне ничего не пришлёт!!!! я же закрываю соединение как только отсылаю запрос. Однако, сниффер говорит что мой запрс не уходит... Хм-м-м...
 

SiMM

Новичок
> А тот скрипт который ты показал также не работает: скрипт не хочет заканчивать работать и что-либо показывать .
У меня работает - выдаёт пургу типа
Код:
<KEY s="ylalbfagyxrfhnrkxohmyvxrketsbsra"/>
Если у тебя не работает - это уже не проблемы PHP (иначе он бы сообщил о возникшей ошибке - PHP FAQ: Ничего не работает! Что делать???).
 
Сверху