我正在尝试在覆盆子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);
它往往会抛出异常,或者有时会停止应用程序。我已经请求了清单文件的权限,但无法弄清楚这行的错误
由于
答案 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:
如果套接字已连接或发生错误 连接。