| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 5 - Связь сокета с портом

Опять создаем тот же проект, что и в предыдущих шагах.

Я снова вынес пройденный код в процедуры. Только переменную SOCKET я сделал глобальной, так как она в последствии будет использоваться во многих командах. То что должно находиться в этих процедурах понятно из прошлых шагов.

..........
void CreateSocket();
void CloseScoket();

SOCKET servsocket;
.........
После создания сокета его нужно связать с портом. Для этого существует функция bind. Но нам нужен номер порта для связи, я его объявил так:
#define PORT_ADDR 80
Мы пытаемся реализовать сервер работающий по протоколу HTTP, а для этого протокола используется порт 80. Вы можете, если конечно знаете, использовать другие порты.

Для организации связи нам необходимо создать структуру SOCKADDR_IN она необходима для выполнения команды bind и в ней содержатся параметры связи, такие как порт и атрибуты. Вот её описание.

struct sockaddr_in{ 
	   short            	sin_family;
	   unsigned short   	sin_port;
	   struct   in_addr     sin_addr;
	   char               	sin_zero[8];};
В данной структуре есть вложенная структура sin_addr она описана вот так.
struct   in_addr {  
  union   {  
       struct{
             unsigned  char   s_b1, 
                              s_b2,
                              s_b3,
                              s_b4;
        }  S_un_b;  
     struct  {             unsigned  short  s_w1,
                             		    s_w2; 
             }  S_un_w;
               unsigned long  S_addr;    
      } S_un;
};
После описания структур и заполения данными можно вызывать bind
	SOCKADDR_IN socketaddr;
	socketaddr.sin_family = AF_INET;
	socketaddr.sin_addr.s_addr  = INADDR_ANY; 
	socketaddr.sin_port = PORT_ADDR;

	if (bind(servsocket,(LPSOCKADDR)&socketaddr,sizeof(socketaddr)) == SOCKET_ERROR)
	{
		printf("Error bind socket");
		exit(1);
	}
	else printf("God bind socket !!!!!!\n");
Вот её описание
int bind ( 
  SOCKET s,                          
  const struct sockaddr FAR*  name,   
  int namelen                    
    );
Если всё нормально, то данная функция вернет 0 в противном случае SOCKET_ERROR


Загрузить проект | Предыдущий шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz