Задать вопрос

Как по Ip подключиться с телефона (клиента) к компьютеру (серверу)?

В общем вот такая проблема, у меня есть клиент и сервер на компьютере, работает наподобие чата (написано на с++), вот теперь нашел такую штуку "Xamarin", которая позволяет скомпилировать код из c# на платформу android.

Все настроил и начал пытаться подключится с телефона к серверу на компьютере, телефон подключен к вайфаю как и комп.Когда ввожу айпишники, телефон выдает ошибку подключения к серверу.

Не знаю, как правильно сделать, чтобы все работало, может, кто поможет.

Вот код c#(клиента на телефоне):
static void TryConnect(int port)
            {
                
            // Буфер для входящих данных
            byte[] bytes = new byte[50];

            // Соединяемся с удаленным устройством

            // Устанавливаем удаленную точку для сокета
            IPHostEntry ipHost = Dns.GetHostEntry("localhost");
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, port);

            Socket sender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
		 // Соединяем сокет с удаленной точкой
            sender.Connect(ipEndPoint);
            string message = "Hello dima";
            byte[] msg = Encoding.UTF8.GetBytes(message);
            int bytesSent = sender.Send(msg);

            ////
            }

а вод код сервера на компе :
//---- Build address structure to bind to socket.--------  
				 memset(&channel, 0, sizeof(channel));// zerochannel 
				 channel.sin_family = AF_INET;
				 channel.sin_addr.s_addr = inet_addr(adrr);  //htonl(INADDR_ANY)
				 channel.sin_port = htons(SERVER_PORT);
				 //--------------------------------------------------------


				 // ---- create SOCKET--------------------------------------
				 s = socket(PF_INET,  SOCK_STREAM, IPPROTO_TCP);
				 if (s < 0) {
					 textBox1->Text = "socket error :" + System::Convert::ToString(WSAGetLastError());
					 WSACleanup();
					 timer = false;
				 }

				 setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on));
				 //---------------------------------------------------------

				 //---- BIND socket ----------------------------------------
				 b = bind(s, (struct sockaddr *) &channel, sizeof(channel));
				 if (b < 0) {
					 textBox1->Text = "bind error :" + System::Convert::ToString(WSAGetLastError());
					 WSACleanup();
					 timer = false;
				 }
				 //----------------------------------------------------------

				 //---- LISTEN socket ----------------------------------------
				 l = listen(s, QUEUE_SIZE);                 // specify queue size 
				 if (l < 0) {

					 textBox1->Text = "listen error %ld" + System::Convert::ToString(WSAGetLastError());
					 WSACleanup();
					 timer = false;
				 }

				 //-----------------------------------------------------------


				 //---- ACCEPT connection ------------------------------------

				 sa = accept(s, 0, 0);                  // block for connection request  
				 if (sa < 0) {

					 textBox1->Text = "accept error " + System::Convert::ToString(WSAGetLastError());
					 WSACleanup();
					 timer = false;
				 }
				 else {

					 textBox1->Text = "connection accepted";
				 }
  • Вопрос задан
  • 4194 просмотра
Подписаться 4 Оценить 2 комментария
Решения вопроса 1
followthemoney
@followthemoney Автор вопроса
Можно закрывать тему,нашел решение.На все про все ушла ночь,проблема решилась вот таким способом:
TcpClient client; // Creates a TCP Client
           client = new TcpClient("192.168.0.103 ", 11000);

все просто и ясно теперь)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы