首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用wifi direct将插座连接到android

如何使用wifi direct将插座连接到android
EN

Stack Overflow用户
提问于 2014-12-03 04:50:11
回答 1查看 4.9K关注 0票数 0

我尝试使用wifi直接从客户端连接到服务器的套接字,所以我在服务器上有以下代码:

代码语言:javascript
复制
 ServerSocket serverSocket = new ServerSocket(2009);
 Socket client = serverSocket.accept();

我在客户端上有这段代码

代码语言:javascript
复制
final WifiP2pDevice peer = wifiP2pDeviceList.get("aMacAddress");
          WifiP2pConfig config = new WifiP2pConfig();
                            config.deviceAddress=peer.deviceAddress;
                            mManager.connect(mChannel,config,new WifiP2pManager.ActionListener() {
                                @Override
                                public void onSuccess() {
                                    mManager.requestGroupInfo(mChannel,new WifiP2pManager.GroupInfoListener() {
                                        @Override
                                        public void onGroupInfoAvailable(WifiP2pGroup group) {

                                            try {
                                                Socket socket = new Socket();

                                                int port = 2009;

                                                int timeout = 5000;
                                                socket.bind(null);

                                                socket.connect((new InetSocketAddress(peer.deviceAddress, port)), SOCKET_TIMEOUT); // Error here
                                        }
                                            catch (IOException e){

                                                e.printStackTrace();
                                            }

我可以直接使用MAC地址吗?或者我的其他解决方案是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-12-03 16:01:25

套接字通信需要InetAddress而不是deviceAddress字符串。

代码语言:javascript
复制
socket.connect((new InetSocketAddress(address, port)), SOCKET_TIMEOUT);

您可以在连接后获取groupOwnerAddress (只能从WIFIP2P获取此IP地址)。

代码语言:javascript
复制
mManager.requestConnectionInfo(mChannel, new WifiP2pManager.ConnectionInfoListener() {
    @Override
    public void onConnectionInfoAvailable(WifiP2pInfo wifiP2pInfo) {
        InetAddress address = wifiP2pInfo.groupOwnerAddress;
        //socket communication
    }
});

所有设备都可以获取此地址。向这个地址发送一条消息,groupOwner就可以从套接字中获取你的IP地址。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27258687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档