Есть клиент:
#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 (соединяюсь
с первой машины). И что я вижу: тот к кому я пытаюсь присоединиться
молчит, а соединяюсь я сам с собой, причем сообщения шлються
тоже мне. Почему так?.
Опять глупый вопрос =).
Делаю так:
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,
ему всё равно.. В чем дело то?
Спасибо.
Попробывал заняться сокетами в Си, но
сразу напоролся на ошибку и не заню, где
не правильно.. ткните, плиз, носом:
#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);
}
Помогите пожалуйста с переводом.
Перевести нужно на русский аля "гоблин",
но чтоб был смысл. Только без матов.
Буду безгранично благодарен.
//Модеры, плиз, не грохайте топик за оффтоп
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?
Прихожу я значит сегодня домой, лезу
в почтовый ящик, а там три извещения,
что пришло 3 посылки по 4,5 киллограмма!!
Блин, пошел на почту, а там три коробки с убунтой!!
Всего комплектов 300 наверное..
Елки-палки, чтож теперь нафиг делать?!
Самое забавное, что я их не заказывал вроде, может
друзья решили пошутить, хз...
Пойду повешаюсь =).
Здрасте!.. вот сделал так:
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
что не так делаю?..
Только давайте без флейма и упрёков ;).
Почему-то захотелось в качестве проекта
сетевую игрушку сделать. Как обстоят
дела с программированием сети в VB?
Стоит ли браться вообще. Единственное,
проект надо сдать к середине мая, и
будет плохо, если я не успею, а ещё ведь
даже не начинал..
Сегодня пришло 20 х86 комплектов. Очень рад.
Прошел всего месяц с того момента, как заказал.
Из Цюриха пакетик.. live-cd правдо говняненький, но
ничего, переживу)..
Нужно перегнать кучу картинок в bmp из jpeg.
На поиск времени нет =(. Скажите чем, плиз.
for i in *;
do {
<тра-та-та>
} done
что вместо тра-та-та вставить?).
Спасибо.
Стало интересно, что за язык. Его ещё кто-нибудь использует?
Среди ЛОРовцев ада-программеры есть? Хочется про него мнения услышать из
первых рук. Стоит ли его учить?.
Надо разместить на шахматной доске
максимальное колличество коней так, чтобы
они НЕ находились друг у друга "под боем".
Размер поля не фиксированный (поле квадратное)..
Необходимо использовать рекурсию.
Чей код будет самым компактным и изящьным?)
Ради тренировки захотелось программировать
сокеты, но ничего толкового не нашёл в бумаге
(плохо искал?). Подумал, что лоровцы помогут
мне в этом деле. Хочу простейшее клиент-серверное
приложение сделать. Обьясните, плиз, как для дебила
принцип работы с сокетами в С/С++, если не впадлу.
Хотелось бы ещё с примерами. Благодарю.