PC和Android设备之间的连接问题- SocketException
本文关键字:连接 问题 SocketException 之间 Android PC | 更新日期: 2023-09-27 18:18:09
当我尝试从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)
{
}
}
有谁能帮我解决这个问题吗?谢谢。
根据评论,有两件事你应该注意。首先,您使用公共地址从本地网络联系本地网络中的设备。我不确定所有的路由器都能正确地做到这一点,但是如果你想要公共访问,你需要转发8867端口。试试吧,也许会有帮助。
在这里搜索你的路由器,你会发现如何做到这一点的解释:http://portforward.com/
在转发后从网络外访问手机时,手机肯定是可用的。当然,你的电话应该总是有相同的本地地址。在路由器设置中保留或在手机上手动设置。
出于测试目的,请尝试在PC上使用手机的本地IP地址。