Есть клиент:
#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 (соединяюсь
с первой машины). И что я вижу: тот к кому я пытаюсь присоединиться
молчит, а соединяюсь я сам с собой, причем сообщения шлються
тоже мне. Почему так?.
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от pisun
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от pisun
Ответ на:
комментарий
от pisun
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от pisun

Ответ на:
комментарий
от AIv

Ответ на:
комментарий
от pisun

Ответ на:
комментарий
от AIv

Ответ на:
комментарий
от pisun
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от pisun

Ответ на:
комментарий
от pisun
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от pisun
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Сокеты в Си (продолжене) (2005)
- Форум Не понимаю почему не работает (2013)
- Форум Сокеты передача сообщений между компьютерами. Помогите найти ошибку. (2012)
- Форум [C] Получить данные на TCP сокет (2008)
- Форум C++, OpenSSL. Как соединиться с сервером через прокси? (2015)
- Форум Таймаут для connect() (2009)
- Форум Подключиться к unix-сокету через bash (2020)
- Форум В чем ошибка чтения? (2020)
- Форум Проблема повторного соеденения клиента к серверу через сокет (C++) (2015)
- Форум Помогите разобраться с sendmsg & recvmsg. (2013)