В общем вот такая проблема, у меня есть клиент и сервер на компьютере, работает наподобие чата (написано на с++), вот теперь нашел такую штуку "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";
}