Сергей123
Интересующийся
Сообщений: 6
|
|
« : 30 Сентябрь, 2013, 10:28:54 » |
|
В QNX cделал две программы: клиент (посылает), сервер (принимает) по сокету чтобы потом связать QNX6.5.1 c Win-7. Программа сервер запускается и ждет. Программа клиент завершается по ошибке на функции connect. Печатает: ошибка подключения к stream socket. В настройках QNX 6.5 ничего не менял, не добавлял. Что я не сделал или что делаю не правильно. Помогите, пожалуйста разобраться. Тексты программ ниже. /* Программная компонента TCP/IP */ #include "./include/tcpip.h" Программа-сервер: /* Программная компонента TCP/IP */ #include "./include/tcpip.h"
#define TRUE 1
int main(int argc, char **argv ) { int sock, length; struct sockaddr_in server; int msgsock; char buf[1024]; int rval, f_vd;
/**************** Создание сокета *******************/ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("Ошибка создания stream сокета"); exit(1); } /**************** Создание имени сокета *******************/ server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons(3151); //server.sin_port = 0;
/**************** Привязка имени к сокету *******************/ if (bind(sock, (struct sockaddr *)&server, sizeof(server))) { perror("ошибка привязки stream socket"); exit(1); }
/**************** Поиск номера порта и печать *******************/ length = sizeof(server); if (getsockname(sock, (struct sockaddr *)&server, &length)) { perror("getting socket name"); exit(1); } printf("Socket использует порт #%d\n", ntohs(server.sin_port));
/********** Ожидание accepting connections *********/ listen(sock, 5); do { msgsock = accept(sock, 0, 0); if (msgsock == -1) { perror("ошибка accept"); return EXIT_FAILURE; } else f_vd = open("/reg/mip.prm", O_WRONLY | O_CREAT | O_APPEND,S_IRUSR | S_IWUSR); do { memset(buf, 0, sizeof(buf)); if ((rval = read(msgsock, buf, 1024)) < 0) perror("ошибка reading stream message"); else if (rval == 0) { printf("Ending connection\n"); close (f_vd); } else {printf("-->%s\n", buf); write( f_vd, buf, rval); } } while (rval > 0); close(msgsock); } while (TRUE); } Программа клиент: /* Программная компонента TCP/IP */ #include "./include/tcpip.h"
#define DATA "Привет от клиента протокола TCP/IP . . ." #define TRUE 1
void main(int argc, char **argv ) { int sock; struct sockaddr_in server; struct hostent *hp, *gethostbyname();
/**************** Создание сокета *******************/ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("Ошибка создания stream сокета"); exit(1); }
/*** Получение сетевого адреса и номера порта из командной строки ***/ server.sin_family = AF_INET; hp = gethostbyname(argv[1]); if (hp == 0) { fprintf(stderr, "%s: неизвестный хост\n", argv[1]); exit(2); } memcpy(&server.sin_addr, hp->h_addr, hp->h_length); server.sin_port = htons(3151); /************** Подключение к сокету **************/ if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) { perror("ошибка подключения к stream socket"); exit(1); }
/************** Запись в сокет **************/ do { delay(1000); if (write(sock, DATA, sizeof(DATA)) < 0) perror("ошибка записи в stream socket"); } while (TRUE); close(sock); }
|