Android新Socket错误

时间:2014-01-14 08:17:04

标签: android sockets raspberry-pi

我正在尝试在覆盆子pi和Android设备之间创建WiFi连接。我是设置WiFi连接的初学者,但已找到一些建立连接的在线代码。这里服务器C代码在pi上运行:

double C[SIZE];
char D[SIZE];
bool bResult = false;

/* if no command line arguments passed, we'll default to 
    these two port number */

int port = 5710;
int dataport = -1;

if (argc > 1)
{
    port = atoi(argv[1]);

    if (argc > 2)
        dataport = atoi(argv[2]);
}

printf("Server, listening on port %d, datagram port %d\n", port, dataport);
fflush(NULL);

Server mylink(port, dataport, &bResult);
if (!bResult)
{
    printf("Failed to create Server object!\n");
    return 0;
}

/* put some dummy data in our arrays */

for (int i = 0; i < SIZE; i++)
{
    C[i] = (double) i*i+0.5;
    D[i] = i;
}
printf("Server, waiting for connection...\n");
fflush(NULL);
mylink.Connect();

printf("Server, got a connection...\n");
fflush(NULL);

for (int i = 0; i < NUM_PACKS; i++)
{
    printf("Server, sending bytes, iteration %d...\n", i);
    fflush(NULL);
    mylink.SendBytes(D, SIZE);

    printf("Server, receiving doubles, iteration %d...\n", i);
    fflush(NULL);
    mylink.RecvDoubles(C, SIZE);
}

printf("Server, closing connection...\n");
fflush(NULL);
mylink.Close();

printf("Server, done...\n");
fflush(NULL);
return 0;

这是连接到raspberry服务器的android代码:

Socket myClient = new Socket("192.168.XXX.XXX", 5710);
SocketAddress remotAddrr = new InetSocketAddress("192.168.XXX.XXX", 5710);  
myClient.connect(remotAddr,10000);
booleanfeedbackconnec = myClient.isConnected();
int feedbackgetport = myClient.getPort();

我认为代码的问题是这一行:

Socket myClient = new Socket("192.168.XXX.XXX", 5710);

它往往会抛出异常,或者有时会停止应用程序。我已经请求了清单文件的权限,但无法弄清楚这行的错误

由于

2 个答案:

答案 0 :(得分:1)

使用此代码将套接字连接到给定的机器和端口

Socket myClient = new Socket("192.168.XXX.XXX", 5710);

然后您创建一个端点并尝试再次连接

SocketAddress remotAddrr = new InetSocketAddress("192.168.XXX.XXX", 5710);
myClient.connect(remotAddr,10000);

只有其中一个就足够了。

答案 1 :(得分:1)

查看Socket课程:

插座()

  

创建一个新的未连接套接字

Socket(String dstName,int dstPort)

  

创建连接到指定目标主机的新流式套接字   通过参数dstName和dstPort。

如果在使用第二个构造函数后,您将调用: Socket.connect(SocketAddress remoteAddr, int timeout)

您将获得IOException:

  

如果套接字已连接或发生错误   连接。