Конференция "Сети" » проблема с сокетами [D7, WinXP]
 
  • Boooze (27.08.08 23:17) [0]
    В общем написал клиен и сервер(чат),переписал точнее с какой то статьи,запускаю сервер ,запускаю клиент ,вбиваю айпи ,порт,нажимаю коннект ,а мне сообщение об ошибке типа:
    '' not avaible value.
  • Slym © (28.08.08 04:46) [1]
    Boooze   (27.08.08 23:17)
    переписал

    плохо переписал...
    Вот я делаю все как сосед (у него сын), а у меня дочь где я акарал?
  • Boooze (28.08.08 13:47) [2]
    Да все нрмально переписал ,просто вот писал сам была какая то ошибка ,попробывал ,мб когда сокеты устанавливал что нибудь не так делал?(хотя че там можно не так сдеать?)решил просто пооверить рабюотают ли у меня сокеты вообще вот переписал со  статьи что бы убедиться ,а вот тут не с сокетами а вообще какая то херня ,про переменную какаую то чилового типа .БЛин мб ,кто нибудь знает откуда эта ошибка?
  • Slym © (28.08.08 14:03) [3]
    Boooze   (28.08.08 13:47) [2]
    переписал со  статьи

    что за статья, ссылку давай или код "своего" чата... ато телепатор даже на максимальной мощьности не принимает...
    Boooze   (28.08.08 13:47) [2]
    кто нибудь знает откуда эта ошибка?

    думаю при столь скудных исходных данных - никто
  • Сергей М. © (28.08.08 14:57) [4]

    > пооверить рабюотают ли у меня сокеты вообще вот переписал
    > со  статьи что бы убедиться


    Если речь идет о TServerSocket/TClientSocket или TTCPServer/TTCPClient, то ты проделал мартышкин труд, переписывая чего-то там с какой-то там статьи - для проверки можно было воспользоваться готовым демо-проектом chat.dpr или netchat.dpr, лежащим прямо перед носом, в папке ($DELPHI\DEMOS\INTERNET)
  • Boooze (28.08.08 16:52) [5]
    сервер:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ServerSocket1.Port    := 777;  {Указываем порт, который будет слушать сервер}
      ServerSocket1.Active  := True; {Активизируем сервер}
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     ServerSocket1.Active := False; {Выключаем сервер}
     ServerSocket1.Close; {Закрываем соединение}
     Close; {Завершаем программу}
    end;

    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
    var
     S: String;
     I: Integer;
    begin
     {Добавляем к строке сообщения клиента идентификатор его сокета}
     S := InTtoStr(Socket.SocketHandle) + '>' + Socket.ReceiveText;
     ListBox1.Items.Add(S); {Добавляем сообщение в список}
     {Перебираем все установленные соединения}
     For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
        {Проверяем - если идентификатор очередного сокета не совпадает
         с идентификатором сокета, приславшего сообщение, то...}

        if ServerSocket1.Socket.Connections[i].SocketHandle <> Socket.SocketHandle then
          {... посылаем очередной клиентской программе новое сообщение}
          ServerSocket1.Socket.Connections[i].SendText(S);
    end;

    клиент:
    procedure TForm1.Button1Click(Sender: TObject);
    {
     Подключение к серверу
    }

    begin
    ClientSocket1.Address := Edit2.Text; {Адрес сервера}
    ClientSocket1.Port := StrToInt(Edit3.text); {Порт сервера}
    {Если ClientSocket1 не включен, то...}
    if not ClientSocket1.Active then  
      ClientSocket1.Active := True; {..включаем его}
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    {
     Закрытие программы
    }

    begin
     ClientSocket1.Active := False; {Выключаем клиента}
     ClientSocket1.Close; {Закрываем сокет}
     Close; {Закрываем программу}
    end;

    procedure TForm1.ClientSocket1Read(Sender: TObject;
     Socket: TCustomWinSocket);
    {
     Обработка данных от сервера
    }

    begin
     {Добавляем новое сообщение от сервера в список}
     Listbox1.Items.Add(Socket.ReceiveText);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    {
     Послать сообщение
    }

    begin
     {Если сообщение не пусто, то...}
     If Edit1.Text <> '' then
       ClientSocket1.Socket.SendText(Edit1.text); {..посылаем его на сервер}
     Edit1.Text := ''; {Очищаем поле ввода}
    end;


    а насчет проверить через стандартные ,не получиться ,так как делфи у мну "урезанная".
  • Boooze (29.08.08 00:03) [6]
    БЛин в стандартых примерах есть только нетчат,только как я понял там в нем сразуи клиент и сервер,и как мне показалось это для локальной сети?
    Ну а что с моим примером?
  • Slym © (29.08.08 08:58) [7]
    Boooze   (28.08.08 16:52) [5]
    содрано 1 в 1 - работает :)
  • Сергей М. © (29.08.08 09:00) [8]

    > Boooze   (29.08.08 00:03) [6]



    > как мне показалось это для локальной сети?


    Неважно для какой.


    > Boooze   (28.08.08 16:52) [5]


    Что находится в Edit2.Text и Edit3.Text на момент нажания Button1 ?
    Какой IP-адрес у хоста-сервера и хоста-клиента ?
  • Boooze (29.08.08 12:00) [9]

    > Что находится в Edit2.Text и Edit3.Text на момент нажания
    > Button1 ?
    > Какой IP-адрес у хоста-сервера и хоста-клиента ?

    в edit1 айпишник ,в edit2 порт ,в edit 3 должно быть сообщение ,которое я могу отправить с помощью другой кнопки (блин а мб потому что я его не заполнил поэтому и ошибка?)
    Сначало я пробывал в локальной сети ,то есть сервер 192.168.0.1 ,а клиент 85.234.44.75...НА каком то форуме мне посоваетовалит что лучше сначало проверитть на одном компе.
  • Boooze (29.08.08 12:03) [10]
    Да ,трабл бюыл в том что я не заполнял поле во время подключение ...Но теперь во время подключение пишеть ошибку с сокетами там :Asynchronous socket error и цифры.
  • Slym © (29.08.08 12:48) [11]
    Boooze   (29.08.08 12:03) [10]
    и цифры

    а вот в цифре весь смак... какая цифра то?
  • Slym © (29.08.08 12:50) [12]
    Boooze   (29.08.08 12:00) [9]
    то есть сервер 192.168.0.1 ,а клиент 85.234.44.75

    ха-ха :) пацталом
    сервер не виден для клиента, он не виден ни для кого кроме локальной сети

    вот если наоборот: сервер 85.234.44.75 ,а клиент 192.168.0.1
    может и проканает
  • Сергей М. © (29.08.08 13:39) [13]

    > трабл бюыл в том что я не заполнял поле во время подключение


    Какое поле-то ?
  • Boooze (29.08.08 22:40) [14]
    поле с сообщение !!!только не понятно пчему???если я полее не заполняю то он думает что сообщение не пустое а содержит '' ,и так как это не цифра выдает ошибку..попробую как сказал слим.э.насчте цифр 10061 ,вот эти цифры пишет
  • Boooze (30.08.08 07:40) [15]
    поменял местами сервер и клиент ,не прокатило...пишет ошибку с сокетами asynchronous socket error 10061.
  • Сергей М. © (30.08.08 17:51) [16]

    > Boooze   (29.08.08 22:40) [14]
    >
    > поле с сообщение


    Ну ты и фрукт, однако)

    Какое нафих поле с каким нафих сообщением, если про него, т.е. про сообщение, речь пойдет лишь после успешного коннекта  ?

    Ты же сам сказал, что "нажимаю коннект ,а мне сообщение об ошибке" !

    А отправка сообщения у тебя происходит при нажатии совсем другой "нажималки", не имеющей отношения к коннекту)
  • Boooze (30.08.08 22:24) [17]
    Да не))я фрукт тот еще конечно,но...Я пишу айпи,порт.Жму кнопку на которую должен происходить коннект.Но почему то если в поле сообщения не напишешь какие нибудь цифры,будет ошибка!!!сам хз пчему)ну допустим я ввел цифры,далее жму не отправить сообщение,а приконнектиться,то есть все правельно..но пишет ошибку с сокетамии цмфры 10061!!
  • Сергей М. © (30.08.08 22:33) [18]
    см. [1] - сдирать чужой проект нужно "один в один", если уж приспичило поглазеть как он работает .. А не нести при этом отсебячину ..
  • Boooze (31.08.08 16:19) [19]
    Все написано 1 в 1 ,скопировал исходник не из той стаьи а ,точто переписал в делфи,+чувак выше написал что у него работает!
    Что то по делу мало ченго написали !ни кто не че не помогя уже какой раз втираю что ошибка с сокетами и пишет цифры 10061 !!
 
Конференция "Сети" » проблема с сокетами [D7, WinXP]
Есть новые Нет новых   [134432   +19][b:0][p:0.003]