我已检查并发现问题是分配给connectionEndpointPair的IP地址是携带wi-fi直接网络适配器的IP而我不知道如何在该特定ip上打开端口,ip不同于我从我的电脑ping它时,Windows正在侦听端口5009并建立连接,当我使用Wi-Fi IP,但当我使用Wi-Fi直接IP地址,我有一个问题
设备和Windows 8.1应用程序之间的Wi-Fi直接连接是可以的,我正在等待我的套接字连接,但它不会发生什么可能是什么问题?
我在Visual Studio上遇到错误:
无法建立连接,因为目标计算机主动拒绝它。 (HRESULT异常:0x8007274D)
在Windows端我正在使用此代码:
String deviceSelector = WiFiDirectDevice.GetDeviceSelector();
DeviceInformationCollection deviceCollection = await DeviceInformation.FindAllAsync(deviceSelector);
if(deviceCollection.Count > 0)
{
try
{
wfdDevice = await WiFiDirectDevice.FromIdAsync(deviceCollection[0].Id);
wfdDevice.ConnectionStatusChanged +=ConnectionStatusChangedNotficationHandler;
var endpointPairs = wfdDevice.GetConnectionEndpointPairs();
EndpointPair connectionEndpointPair = endpointPairs[0];
try
{
connectionEndpointPair.RemoteServiceName = "5009";
StreamSocket socket = new StreamSocket();
await socket.ConnectAsync(connectionEndpointPair);
string s = "hello";
}catch (Exception err)
{
string s = err.Message;
s = err.StackTrace;
}
}
catch (Exception err)
{
string error = err.Message;
}
在android方面,我正在使用此代码:
private void initiateClientSocket(String hostAddress) {
int timeout = 10000;
int port = 5009;
InetSocketAddress socketAddress
= new InetSocketAddress(hostAddress, port);
try {
Socket socket = new Socket();
socket.bind(null);
socket.connect(socketAddress, timeout);
} catch (IOException e) {
Log.e(TAG, "IO Exception.", e);
}
// TODO Start Receiving Messages
}
从android方面我得到了:
java.net.UnknownHostException:主机未解析:我的ip
可以请任何帮助
谢谢:)
答案 0 :(得分:4)
即使您在Android手机和Windows计算机之间有直接的WIFI连接,也需要服务器和客户端进行TCP连接。
我不知道您的应用程序的目的,但我认为Windows计算机是服务器的更好选择。因此,连接到套接字,在计算机上,您应该打开端口的监听器。
与所选StreamSocket
类相关的服务器类是StreamSocketListener
。您可以在此处找到文档:http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.sockets.streamsocketlistener.aspx
本文档中还有一段关于典型操作顺序的段落:
我没有使用过这个特殊课程,但TCP的基础知识总是一样......
答案 1 :(得分:2)
我不太了解您在Window上的代码,但猜测以下代码存在问题
connectionEndpointPair.RemoteServiceName = "5009";
似乎“RemoteServiceName”与端口号5009无关。请检查struct / object“connectionEndpointPair”中的其他字段并进行适当的设置。