我正在开发一个Android应用程序,它将使用TCP与wifi控制器(固定IP和PORT)进行通信,但由于我还没有控制器。所以我创建了一个简单的C#服务器程序,它将收到一些测试消息。
但是当我尝试在android中打开连接时,它给了我异常:
java.net.ConnectException: failed to connect to /10.0.2.2 (port 1234): connect failed: ETIMEDOUT (Connection timed out)
C#程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Server
{
class Program
{
static byte[] Buffer { get; set; }
static Socket sck;
static void Main(string[] args)
{
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sck.Bind(new IPEndPoint(0, 1234));
sck.Listen(100);
Socket accepted = sck.Accept();
Buffer = new byte[accepted.SendBufferSize];
int bytesRead = accepted.Receive(Buffer);
byte[] formatted = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
{
formatted[i] = Buffer[i];
}
string strData = Encoding.ASCII.GetString(formatted);
Console.Write(strData + "\r\n");
Console.Read();
sck.Close();
accepted.Close();
}
}
}
Android代码:
try
{
if (socket == null) {
int SERVERPORT = 1234;
InetAddress serverAddr = InetAddress.getByName("10.0.2.2");
socket = new Socket(serverAddr, SERVERPORT); // FAILS
}
}
} catch (IOException e) {
e.printStackTrace();
}
这是我第一次使用套接字。在网络方面,我是DUMB。所以这可能是一个简单的错误。
当然我用这个错误检查了所有相关问题,但仍然无法解决这个问题。
我正在使用GenyMotion模拟器。 使用Windows 8.1 64x。 我设置防火墙设置以允许C#应用程序与Windows防火墙(公共和私有)进行通信。
有谁知道解决方案?感谢