通信的第一步是客户端找到服务器的ip,这个就只能用UDP广播去实现,假设一个手机A为客户端,手机B为服务器,这两个手机处于同一个网段中,服务器开一个端口开始监听UDP包,客户端向255.255.255.255发送一个包,其实就是改网段发送一个广播包,该网段内的所有设备都可以收到,服务器收到该包后,做同样的操作,也发一个广播,客户端收到广播后,解析包,就能获取服务器的ip.
1.客户端发送广播
/**
* 手机发送广播,寻找服务器的ip
*/
JNIEXPORT jint JNICALL Java_com_example_jnisocket_SocketUtil_sendBroadCastFromClient
(JNIEnv *env, jobject jobj)
{
LOGD("client sendBroadCaseFromClient");
char bmsg[20] = "clienttest";
int brdcFd;
if((brdcFd = socket(PF_INET,SOCK_DGRAM,0)) == -1)
{
LOGD("error1:%s",strerror(errno));
}
int optval = 1;
setsockopt(brdcFd,SOL_SOCKET,SO_BROADCAST|SO_REUSEADDR,&optval,sizeof(int));
struct sockaddr_in theirAddr