LINUX.ORG.RU

Сообщения pisun

 

Клиент, сервер и их правильная работа.

Форум — Development

Есть клиент:

#include <stdio.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <resolv.h>
int main(int argc, char *parms[])
{ 
  int sock;
  struct sockaddr_in addr;
  sock=socket(PF_INET, SOCK_STREAM, 0);
  char in_letter, out_letter;

  if (argc==3)
    {
      bzero(&addr, sizeof(addr));
      addr.sin_family = AF_INET;
      inet_addr(parms[1], &addr.sin_addr.s_addr);
      addr.sin_port=htons(atoi(parms[2]));
      printf("Remote destination: %s:%s\n", parms[1], parms[2]);
    }
  else { printf("So much parms!\n"); exit(0); };   
 
  if (connect(sock, (struct sockaddr *) &addr, sizeof(addr))!=0)
   { perror("Connect Error"); exit(0); };
  int size=sizeof(addr);
  char buffer[1024];
   do
     {
       scanf("%s", buffer);
       send(sock, buffer, strlen(buffer),0);
     } while (!(strncmp("bye", buffer, 4)==0);

 return(0);
}

есть сервер:

#include <stdio.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <resolv.h>
int main()
{ int sock;
  struct sockaddr_in addr;
  sock=socket(PF_INET, SOCK_STREAM, 0);
  char in_letter, out_letter;
  bzero(&addr, sizeof(addr));
  addr.sin_family = AF_INET;
  addr.sin_addr.s_addr=INADDR_ANY;
  addr.sin_port=htons(2000);
  bind(sock, (struct sockaddr*)&addr, sizeof(addr));
  printf("Bind OK\n");
  listen(sock,20);
  printf("Listen OK\n");
  for (;;)
   {
    int clientsd;
    int size=sizeof(addr);
    clientsd=accept(sock, (struct sockaddr*)&addr, &size);
    printf("Connection OK\n");
    if (clientsd>0)
     {
       char buffer[1024];
       int nbytes;

       do
        {
	 nbytes=recv(clientsd, buffer, sizeof(buffer), 0);
	  if (nbytes>0)
	    printf("%s",buff);
        } while (!(nbytes>0 && strncmp("bye\r", buffer, 4)==0);   
        
       close(clientsd);
     }
     printf("Connetion broken\n");  
    } 
 return(0);
}


Проблема такова: если запускаю сервер на локальном компьютере,
потом соединяюсь клиентом, то все работает. НО! Есть сеть из 12
компьютеров, они соедены через хаб, на одном делаю:
ifconfig eth0 up 192.168.50.1 netmask 255.255.255.0
на втором: ifconfig eth0 up 192.168.50.2 netmask 255.255.255.0
запускаю сервер на 192.168.50.1 и на 192.168.20.2 тоже, потом
пытаюсь соединиться: ./client 192.168.50.2 2000 (соединяюсь
с первой машины). И что я вижу: тот к кому я пытаюсь присоединиться
молчит, а соединяюсь я сам с собой, причем сообщения шлються
тоже мне. Почему так?.
pisun
()

Условие выхода из цикла =).

Форум — Development

Опять глупый вопрос =).
Делаю так:
   
     char buffer[1024];
     do
      {
         do
           {
             scanf("%s", buffer);
             buffer[strlen(buffer)+1]='\0';
           } while (strncmp("bye\0",buffer,4)!=0);
           printf("hello");
      }while (strncmp("bye\0",buffer,4)!=0);

когда выполняется, то мы выходим из внутреннего do, выводим "hello",
а затем выходим из внешнего do. Все а порядке.
потом к условию вложенного do добавляю кусочек и получается так:

     char buffer[1024];
     do
      {
         do
           {
             scanf("%s", buffer);
             buffer[strlen(buffer)+1]='\0';
           } while (strncmp("bye\0",buffer,4)!=0 || strncmp(".\0",buffer,2)!=0);
           printf("hello");
      }while (strncmp("bye\0",buffer,4)!=0);

а вот теперь ему пое*ать на условие вложенного do, пускай я введу bye\0, пускай .\0,
ему всё равно.. В чем дело то?
Спасибо.
pisun
()

Сокеты в Си (продолжене)

Форум — Development

Что у меня за косяк на этот раз? %(
Уже замучился... Блин, сервер разрывает 
соединение =(.

#include <stdio.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <resolv.h>
int main()
{
  char *adres="192.168.50.1";
  int sock;
  struct sockaddr_in addr;
  sock=socket(PF_INET, SOCK_STREAM, 0);
  char in_letter, out_letter;
    bzero(&addr, sizeof(addr));
    addr.sin_family = AF_INET;
    inet_aton(adres, &addr.sin_addr);
    addr.sin_port=htons(2000);
 
  bind(sock, &addr, sizeof(addr));
  printf("bind OK\n");
  
  listen(sock,20);
  printf("Listen OK\n");
  
  for (;;)
   {
    int clientsd;
    clientsd=accept(sock, &addr, sizeof(addr));
    if (clientsd>0)
     {
      char buffer[1024];
      int nbytes;
     
      do 
       {
        nbytes = recv(clientsd, buffer, sizeof(buffer), 0);
	if (nbytes>0) send(clientsd, buffer, nbytes,0);
       } while (nbytes>0 && strncmp("bye\r",buffer,4)!=0);  	

      close(clientsd);
     }
    } 
   close(sock);
 return(0);
}
pisun
()

Cокеты и Cи

Форум — Development

Попробывал заняться сокетами в Си, но
сразу напоролся на ошибку и не заню, где
не правильно.. ткните, плиз, носом:

#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main()
{
 int fd;
 struct sockaddri_in dest;
 char *host="127.0.0.1";
 bzero(&dest, sizeof(dest));
 dest.sin_family = AF_INET;
 dest.sin_port = htons(13);
 inets_atons(host, &dest.sin_addr);
 if (connect(fd, &dest, sizeof(dest))!=0)
  {
   perror("ERROR OPENNING SOCKET!");
   exit(0);
  }
return(0);
}
pisun
()

софт для разностных уравнений

Форум — General

Никто не видел прораммок для подсчёта разностных уравнений?
Было бы просто прекрасно, если бы она была с открытыми исходниками.

pisun
()

Нужна ваша помощь с переводом.

Форум — Talks

Помогите пожалуйста с переводом.
Перевести нужно на русский аля "гоблин",
но чтоб был смысл. Только без матов. 
Буду безгранично благодарен.
//Модеры, плиз, не грохайте топик за оффтоп

Beatles, The, - Girl
Is there anybody goin` to listen to my story
All about the girl who came to stay?
She`s the kind of girl you want
So much it makes you sorry;
Still you dont`t regret a single day.

Ooh, girl! girl!...
When I think of all the times
I`ve tried so hard to lave her
She will turned to me and start to cry;
And she promises the Earth to me and I believe her,
After all this time I don`t know why.

Ooh, girl! girl!
She`s the kind of girl who puts
You down when friend are there
You feel a fool.
When you say she`s looking good
She acts as if it`s understood.
She`s cool, cool,cool,cool.
Girl!girl!
Was she told when she was young
That they would lead to pleasure?
Did she understand it when they say
That the man must break his back
To earn his day of leasure?
Will she still believe it when he`s died?
pisun
()

UBUNTU захватывает мир!!

Форум — Talks

Прихожу я значит сегодня домой, лезу
в почтовый ящик, а там три извещения,
что пришло 3 посылки по 4,5 киллограмма!!
Блин, пошел на почту, а там три коробки с убунтой!!
Всего комплектов 300 наверное..
Елки-палки, чтож теперь нафиг делать?!
Самое забавное, что я их не заказывал вроде, может
друзья решили пошутить, хз...
Пойду повешаюсь =).

pisun
()

Umax AstraSlim 1200Se

Форум — General

Кому-нибудь удалось завести subj. под линуксом?

pisun
()

что опять не так =( - обменять адресами..

Форум — Development

Здрасте!.. вот сделал так:

      int *tmp;
      tmp=&ar[0];
      &ar[0]=&ar[1];
      &ar[1]=tmp;

мне нужно сделать "обмен" адресами,
а получаю вот что:

test.c:13: error: non-lvalue in assignment
test.c:14: error: non-lvalue in assignment

что не так делаю?..
Только давайте без флейма и упрёков ;).
pisun
()

Проект на VB (part II)

Форум — Development

Почему-то захотелось в качестве проекта
сетевую игрушку сделать. Как обстоят
дела с программированием сети в VB?
Стоит ли браться вообще. Единственное,
проект надо сдать к середине мая, и
будет плохо, если я не успею, а ещё ведь
даже не начинал..

pisun
()

Убунту пришёл в мой дом =).

Форум — Talks

Сегодня пришло 20 х86 комплектов. Очень рад.
Прошел всего месяц с того момента, как заказал.
Из Цюриха пакетик.. live-cd правдо говняненький, но
ничего, переживу)..

pisun
()

jpeg => bmp

Форум — General

Нужно перегнать кучу картинок в bmp из jpeg.
На поиск времени нет =(. Скажите чем, плиз.

for i in *;
 do {
   <тра-та-та>
 } done

что вместо тра-та-та вставить?).
Спасибо.
pisun
()

Считает ли MathCad разностные уравнения?

Форум — Talks

subj.

pisun
()

Ада.

Форум — Development

Стало интересно, что за язык. Его ещё кто-нибудь использует?
Среди ЛОРовцев ада-программеры есть? Хочется про него мнения услышать из
первых рук. Стоит ли его учить?.

pisun
()

массив из файла в память =(

Форум — Development

Загибаюсь! Помогите.
есть файл вида

1,0,1,1
1,0,0,1
1,1,1,0
1,1,1,1

(квадратный массив из ноликов и еденичек,
разделённых запятыми).

Мне всего лишь надо его из файла в память.
Сделал так (только, млин, не бейте за код)

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
FILE *fd;
int n=0;
char *array;
char name[100], temp[1];
printf("Enter name of file: ");
gets(name);
if (fd=fopen(name,"r")==NULL) printf("Invalid file name.\n");

while (temp[1]!='\0')
{
fgets(temp,1,fd);
if (temp[1]!=',') ++n;
}
array=malloc(sizeof(char)*n*n);
fseek(fd,0L,SEEK_SET);
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
{
fgets(temp,1,fd);
if (temp[1]!=',' && temp[1]!='\0') array[i][j]=temp[1];
}
free(array);
close(fd);
return(0);
}

не работает =(. Что я б*я не так делаю?..

pisun
()

Gmail!

Форум — Talks

Куда делись ивайты??!! было штук 20, а потом <ХЛОП!> и нет, неужто забрали?

pisun
()

Интересная задачка.

Форум — Talks

Надо разместить на шахматной доске
максимальное колличество коней так, чтобы
они НЕ находились друг у друга "под боем".
Размер поля не фиксированный (поле квадратное)..
Необходимо использовать рекурсию.
Чей код будет самым компактным и изящьным?)

pisun
()

Cлова, в которых бьётся пульс нашего времени.

Форум — Talks

Как думаете, что это за слова?..
Линукс тут правда не при чём, но всё же.

pisun
()

network programming =)

Форум — Talks

ЛОЛ. Вот, почитайте, кто не видел ещё:
http://network.programming-in.net/russian/

pisun
()

Сокеты в С/С++.

Форум — Development

Ради тренировки захотелось программировать
сокеты, но ничего толкового не нашёл в бумаге
(плохо искал?). Подумал, что лоровцы помогут
мне в этом деле. Хочу простейшее клиент-серверное
приложение сделать. Обьясните, плиз, как для дебила
принцип работы с сокетами в С/С++, если не впадлу.
Хотелось бы ещё с примерами. Благодарю.

pisun
()

RSS подписка на новые темы