ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

С# и сокеты
  #1  
Старый 08.05.2009, 10:00
Аватар для [NiGHT]DarkAngel
[NiGHT]DarkAngel
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме:
812087

Репутация: 129
По умолчанию С# и сокеты

Пишу программку,ее основой является мини подобие http сервера,проблема заключается в следующем,когда из студии я компилирую проект,запускает сервер и я могу обратиться к нему браузером и сервер вернет браузере ответ,который соответственно я увижу в окне браузера... но если я не перезапуская свой сервер попрошу отдать в браузер другую страничку,то браузер пишет,что не может соединиться с сервером ... помогите пожалуйста решить проблему,заранее очень сильно благодарен.

ЗЫ Сильно ногами за код не пинать,только учусь

PHP код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace 
http_agent
{

    class 
http_serv
    
{
        private const 
int MAX_BUFFER 4096;
        private const 
string notfound "HTTP/1.1 404 File not found\n\n";
        private const 
string header_send "HTTP/1.1 200 OK\nServer: tinyHttp\nConnection: close\nContent-Type: text/html\n\n";
        
Socket listenfd null;
        
IPEndPoint pe null;

        public 
int initHTTPServ()
        {           
          
          
//if(listenfd.) listenfd.Close(); -- проверить существует ли сокет,если да то закрыть его...
            
listenfd = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            
pe = new IPEndPoint(IPAddress.Any8080);

            
listenfd.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,false);        

            
listenfd.Bind(pe);

            
listenfd.Listen(1);
 
            
System.Console.WriteLine("HTTP Server start ...");
            return 
0;
        }

        public 
void checkHttpServer()
        {
            
//Подключаемся к сокету и вызываем функцию обслуживания запроса
            
handleConnection(listenfd.Accept());         
        }


        public 
string getFileName(string inbufint start)
        {
            
int i start0;
            
string ret "";
            
char[] outs = new char[80 1];

            while (
inbuf[i] == ' 'i++;
           
            for (; 
inbuf.Lengthi++)
            {
                if (
inbuf[i] == ' ')
                {
                    break;
                }
                
outs[j++] = inbuf[i];               
            }

            
ret = new string(outs,0,j);

            if (
ret == "/")                 
            {                
                
ret "/index.html";
            }

            return 
ret;           
        }

        public 
void emitHTTPResponseHeader(Socket connfd)
        {
            
connfd.Send(Encoding.ASCII.GetBytes(header_send));
        }

        public 
void handleConnection(Socket connfd)
        {
            
Console.WriteLine("Handle Connections...");
            
int lenmaxloop;
            
byte[] buffer = new byte[http_serv.MAX_BUFFER+1];
            
string filename "";
            
string str_in_sock "";

            
max 0loop 1;
            while (
loop == 1
            {
             
len connfd.Receive(buffer);
             
buffer[max+len] = 0;
             if (
len <= 0) return;
             
max += len;            
             if ((
buffer[max-4] == 0x0d) && (buffer[max-3] == 0x0a) && (buffer[max-2] == 0x0d) && (buffer[max-1] == 0x0a)) loop 0;            
            }

            
str_in_sock Encoding.ASCII.GetString(buffer0max);

            if (
str_in_sock.Substring(03) == "GET")  //если метод GET 
            
{

                
filename getFileName(str_in_sock4); //получаем имя запрашиваемого файла файла
             
      
            
if      (filename == "/index.html") { Console.WriteLine("GET /index.html");}//emitNews( connfd );
            
else if (filename == "/config.html") { Console.WriteLine("GET /config.html");} //emitConfig( connfd );
            
else if (filename == "/art") { Console.WriteLine("GET /art"); } //emitArticle( connfd, filename );
            
else 
            {             
                
connfd.Send(Encoding.ASCII.GetBytes(notfound));
                
connfd.Close();
                
Console.WriteLine("GET Not Found");
            }

          }else if (
str_in_sock.Substring(04) == "POST")  //Если метод POST
           
{

            
filename getFileName(str_in_sock4);

           if (
filename == "/clear"
           {
            
//clearEntries();
            
emitHTTPResponseHeader(connfd);
            
buffer Encoding.ASCII.GetBytes("<P><H1>Нажмите назад и перезагрузите страницу</H1><P>\n\n");
            
connfd.Send(buffer);
           } else 
           {
             
connfd.Send(Encoding.ASCII.GetBytes(notfound));
             
connfd.Close();
           }
         } 
         else 
         {
            
connfd.Send(Encoding.ASCII.GetBytes("HTTP/1.1 501 Not Implemented\n\n"));
           
         }
        }        
    }


    class 
Program
    
{
        static 
void Main(string[] args)
        {
           
http_serv serv = new http_serv();
           
serv.initHTTPServ();
           
serv.checkHttpServer();
           
System.Console.ReadLine();
        }
    }

 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi сокеты Flame of Soul С/С++, C#, Delphi, .NET, Asm 2 22.04.2009 04:56
Сокеты and max_execution_error Велемир PHP, PERL, MySQL, JavaScript 8 02.02.2009 17:52
Отправляем хтмл-письмо через сокеты je0n Статьи 4 07.02.2007 15:23
[Delphi] Закачка файлов через сокеты Navern С/С++, C#, Delphi, .NET, Asm 3 04.02.2007 16:13
В общем делаю запрос в сокеты! и Не чего не возвращает! AIN С/С++, C#, Delphi, .NET, Asm 19 07.08.2005 17:27



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ