Android套接字连接被拒绝
我在通过socket连接两部android手机时遇到问题。我正在使用android调试桥将手机连接到我的PC,我可以在手机上启动模拟器 我在一部手机上启动服务器并尝试与另一部手机连接,但在客户端出现以下错误:Android套接字连接被拒绝,android,sockets,port,Android,Sockets,Port,我在通过socket连接两部android手机时遇到问题。我正在使用android调试桥将手机连接到我的PC,我可以在手机上启动模拟器 我在一部手机上启动服务器并尝试与另一部手机连接,但在客户端出现以下错误: W/System.err: java.net.ConnectException: failed to connect to /192.168.49.1 (port 8080): connect failed: ECONNREFUSED 服务器 private class SocketS
W/System.err: java.net.ConnectException: failed to connect to /192.168.49.1 (port 8080): connect failed: ECONNREFUSED
服务器
private class SocketServerThread extends Thread {
static final int SocketServerPORT = 8080;
@Override
public void run() {
try {
serverSocket = new ServerSocket(SocketServerPORT);
Log.d("Quiz", "Server creation connection success");
Log.d("Quiz", "Server local port "+serverSocket.getLocalPort());
Log.d("Quiz", "Server local port "+serverSocket.getInetAddress());
HostingScreen.this.runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
while (true) {
Socket socket = serverSocket.accept();
count++;
message += "#" + count + " from " + socket.getInetAddress()
+ ":" + socket.getPort() + "\n";
HostingScreen.this.runOnUiThread(new Runnable() {
@Override
public void run() {
msg.setText(message);
}
});
SocketServerReplyThread socketServerReplyThread = new SocketServerReplyThread(
socket, count);
socketServerReplyThread.run();
}
} catch (IOException e) {
e.printStackTrace();
}
}
客户
@Override
protected Object doInBackground(Object[] params) {
Socket socket = null;
try {
socket = new Socket(host,port);
Log.d("Quiz", "Client socket success");
connected = true;
while (connected) {
try {
Log.d("Quiz", "Sending command");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
.getOutputStream())), true);
// where you issue the commands
} catch (Exception e) {
}
}
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
目前,服务器和客户端的端口均硬编码为8080,当我使用以下代码在手机之间建立连接时,会找到主机地址:
联系
private void onConnectionChanged(Intent intent) {
final NetworkInfo netInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
final WifiP2pInfo p2pInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_INFO);
isConnected = netInfo.isConnected();
if (isConnected) {
//Get host connection info
wifiMgr.requestConnectionInfo(channel, new ConnectionInfoListener() {
@Override
public void onConnectionInfoAvailable(final WifiP2pInfo info) {
wifiMgr.requestGroupInfo(channel, new GroupInfoListener() {
@Override
public void onGroupInfoAvailable(WifiP2pGroup group) {
if (group == null)
return;
WiFiP2P.this.group = group;
Log.d(TAG, "Wifi p2p connection group is " + group.getNetworkName());
Log.d(TAG, "Group size " + group.getClientList().size());
fireOnConnectionSucceed(group.getNetworkName(), group.getPassphrase());
//create client if not host
if(info.isGroupOwner) {
Client client = new Client(8080, p2pInfo.groupOwnerAddress.getHostAddress());
client.execute();
Log.d(TAG, "Client launch success");
Log.d(TAG, "Host address " + p2pInfo.groupOwnerAddress.getHostAddress());
}
}
});
if (isConnected && !info.isGroupOwner) {
} else {
startDiscovery();
}
}
});
} else {
group = null;
fireOnConnectionLost();
}
}
我检查连接的人是否是主机,如果不是,我启动客户端,将端口和主机地址传递给客户端,这是一个Aysnc任务,其中创建了要连接的套接字
当发生以下情况时,客户端中会发生错误:
socket = new Socket(host,port);
用于导致所述错误的
你知道问题出在哪里吗?它们都通过WiFi相互连接,但当我尝试连接到服务器插座时失败
提前谢谢
编辑:
为了解决一些问题,我使用adb将应用程序从我的电脑下载到我的手机上,从手机上我可以启动应用程序
我正在使用wifimanager连接两部手机我需要找出哪部手机创建了wifi组,然后该人是我可以连接的服务器的主机当我尝试启动套接字以使用连接信息中的主机地址连接到主机时出现问题。我设法解决了我的问题,原来承载服务器的设备没有被指定为组所有者
config.groupOwnerIntent=0;
将连接设备的所有者意图设置为0修复了该问题。
在手机上启动模拟器我检查连接的人是否是主机
。抱歉,我不知道你在做什么。我正在使用android调试桥将手机连接到我的电脑
。我看没有理由将它们连接到你的电脑。我需要从我的电脑获取应用程序并将其放在我的手机上。我能够启动应用程序,这正是我需要桥接的原因,我使用wifimanager连接两部手机,然后检查哪部手机是群的主机。