当我尝试从PC连接到Android设备时,我发现了一个套接字异常“无法建立连接,因为目标计算机主动拒绝它”。 android设备上的服务器代码:
private void networkOperations()
{
Thread networkThread = new Thread (null, doBackgroundThreadProcessing, "Network");
networkThread.start();
}
private Runnable doBackgroundThreadProcessing = new Runnable()
{
public void run() {
backgroundThreadProcessing();
}
};
private void backgroundThreadProcessing()
{
Socket s = null;
ServerSocket ss = null;
try {
ss = new ServerSocket(8867);
} catch (IOException e) {
e.printStackTrace();
}
while(!Thread.currentThread().isInterrupted())
{
try {
if (s == null)
s = ss.accept();
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
String st = null;
st = input.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}
networkOperations()正在调用Main Activity的onCreate()方法。 PC上的客户代码(C#):
class Connection
{
public Connection(String ip, String port)
{
Ip = IPAddress.Parse(ip);
Port = Convert.ToInt32(port);
}
public IPAddress Ip
{
get;
set;
}
public Int32 Port
{
get;
set;
}
public Boolean ConnectionError;
public Socket S;
public void ConnectToServer()
{
IPEndPoint ipe = new IPEndPoint(Ip, Port);
S = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
try
{
S.Connect(ipe);
}
catch (SocketException e)
{
}
}
有人可以帮我解决这个问题吗?感谢。
答案 0 :(得分:0)
根据评论,您应该注意两件事。首先,您使用公共地址从本地网络联系本地网络中的设备。我不确定所有路由器都能正确执行此操作,但是如果您想要公共访问,则需要转发8867端口。试试吧,它可能会有所帮助。
在此处搜索您的路由器,您将找到解释如何执行此操作: http://portforward.com/
转发后,当从网络外部访问手机时,手机肯定可用。当然,您的手机应始终具有相同的本地地址。在路由器设置中保留它或在手机上手动设置它。
出于测试目的,请尝试使用PC上的电话本地IP地址。