Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 09:55   #1
Stepler415
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 16
По умолчанию Не могу приконектит клиект C++ к серверу на c#

Здравствуйте, есть клиент на C+.
Код:
#include "stdafx.h"
#include <iostream>
#include <winsock2.h>
#include <windows.h> 
#pragma comment ( lib, "ws2_32.lib" )
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 WSADATA wsaData;
 SOCKET clientSocket;
 SOCKADDR_IN clientSocketAddress;
 DWORD dwError;
 
 WSAStartup(MAKEWORD(2,0), &wsaData);
 
 clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 clientSocketAddress.sin_family = AF_INET;
 clientSocketAddress.sin_port = 7777;
 clientSocketAddress.sin_addr.S_un.S_addr = inet_addr("192.168.1.76");
 
 connect(clientSocket, (struct sockaddr*)&clientSocketAddress, sizeof (clientSocketAddress));
 closesocket(clientSocket);
 
 return 0;
}
Есть сервер на C#.
Код:
private void StartServer()
        {
            try
            {
                IPHostEntry ipHost = Dns.GetHostEntry("192.168.1.76");
                IPAddress ipAddr = ipHost.AddressList[0];
                IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 7777);
                Socket listenSocket = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
                listenSocket.Bind(ipEndPoint);
                listenSocket.Listen(10000);
 
                while (true)
                {
                    Socket handler = listenSocket.Accept();
                    // Прием клиентов
                }
 
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
Не получается установить связь между клиентом и сервером. В чем может быть дело?
Stepler415 вне форума Ответить с цитированием
Старый 12.10.2014, 10:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если поменять на 127.0.0.1, запустить на одной и той же машинке и клиент и сервер, поотключав брандмауер - сработает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 10:44   #3
Stepler415
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если поменять на 127.0.0.1, запустить на одной и той же машинке и клиент и сервер, поотключав брандмауер - сработает?
Нет, до этого я давал разрешение серверу, брандмауэр срабатывал на сервер и на клиент который написанный на c#, а тот клиент который на c++ при старте брандмауэр не реагировал на него.
Stepler415 вне форума Ответить с цитированием
Старый 12.10.2014, 10:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит бери отладчик и под отладчиком смотри что возвращает connect(). Ну и соответственно получи текст ошибки или хотя бы ее код. Через WSAGetLastError
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 11:53   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

clientSocketAddress.sin_port = 7777;
переделать на
clientSocketAddress.sin_port = htons(7777);
waleri вне форума Ответить с цитированием
Старый 12.10.2014, 13:10   #6
Stepler415
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
clientSocketAddress.sin_port = 7777;
переделать на
clientSocketAddress.sin_port = htons(7777);
Не помогла.
connect(clientSocket, (struct sockaddr*)&clientSocketAddress, sizeof (clientSocketAddress));

Возвращает -1, код ошибки WSAGetLastError() = 10061
Stepler415 вне форума Ответить с цитированием
Старый 12.10.2014, 13:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
10061
Connection refused. Файерволл отключил?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 15:23   #8
Stepler415
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Connection refused. Файерволл отключил?
Сейчас попробовал отключить, ошибка та же. К тому же в брандмауэре стоит уведомление если он что то блокирует, но от клиента на c++ не разу его не получал.

Последний раз редактировалось Stepler415; 12.10.2014 в 15:25.
Stepler415 вне форума Ответить с цитированием
Старый 12.10.2014, 15:27   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А в сервере небось не поменял прослушку 127.0.0.1?
И вообще зачем на сервере биндить сокет на конкретный адрес? Поставь бинд на все адреса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 15:43   #10
Stepler415
Пользователь
 
Регистрация: 08.01.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А в сервере небось не поменял прослушку 127.0.0.1?
И вообще зачем на сервере биндить сокет на конкретный адрес? Поставь бинд на все адреса.
Подружил, только теперь с клиента на C# не могу подключится. Парадокс, ну да ладно)))
Код:
        private void StartServer()
        {
            try
            {
               // IPHostEntry ipHost = Dns.GetHostEntry("192.168.1.76");
                //IPAddress ipAddr = ipHost.AddressList[0];
                IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 7777);
                Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                listenSocket.Bind(ipEndPoint);
                listenSocket.Listen(10000);

                while (true)
                {
                    Socket handler = listenSocket.Accept();
                }

            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }

Последний раз редактировалось Stepler415; 12.10.2014 в 15:47.
Stepler415 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не подключается к серверу Ardarik БД в Delphi 25 03.02.2013 20:09
Не могу подключится к серверу Ventrilo ku4eravi Безопасность, Шифрование 0 09.07.2011 13:05
Не могу подключиться к MySQL-серверу с другого ПК в локальной сети palevg БД в Delphi 5 22.12.2010 22:52
Подключение к серверу Vinnipux PHP 5 29.10.2010 18:30
Подключение к серверу Artem Работа с сетью в Delphi 4 11.11.2007 09:27