意思就是: 服务器端 需要判断连接客户端连接,
当一个客户端第一次发数据到服务器时,服务器端需要给客户端一个握手协议,此后,该客户端再次与服务器端通信时,不需要再握手,如正常SOCKET通信,收发就可以了...
依次类推,
以后的每个客户端与服务器做SOCKT通信前,都需要服务器端先建立握手动作,然后再相互做socket通信
当,某个客户端断开连接后,再次与服务器连接时,就像第一次连接服务器一样,需要先握手
服务器端如何处理,比较合适?
6 个解决方案
#1
握手动作又不让你去做,tcp底层自己做了
#2
心跳监控连接状态, 即可,
#3
发送心跳包就可以吧
#4
NONO ,
可能是我描述不清楚
HTML5服务器,,第一次客户端连接时,需要一次握手协议,,当该客户端再发数据来时,与服务器不用再握手
当作普通SOCKET处理
可能是我描述不清楚
HTML5服务器,,第一次客户端连接时,需要一次握手协议,,当该客户端再发数据来时,与服务器不用再握手
当作普通SOCKET处理
#5
下面是服务器接受函数的一段代码
如果是某个客户端第一次连接服务器,则建立握手先,以后,该连接除非重新连接服务器再,则不需要握手动作,做普通SOCKET通信
但是,下面代码作判断时,服务器只能与一个客户端建立连接,其他客户端就不能再连接上了,服务建立握手...
当多个客户端存在时,如何判断每一个客户端是否是第一次与服务器连接,以便建立握手?
如果是某个客户端第一次连接服务器,则建立握手先,以后,该连接除非重新连接服务器再,则不需要握手动作,做普通SOCKET通信
但是,下面代码作判断时,服务器只能与一个客户端建立连接,其他客户端就不能再连接上了,服务建立握手...
当多个客户端存在时,如何判断每一个客户端是否是第一次与服务器连接,以便建立握手?
len = recv(fd, ev->buff, sizeof(ev->buff), 0);
printf("---------------------\n");
printf("recv data len: %d\n",len);
printf("---------------------\n");
printf("recv data content: %s\n",ev->buff);
printf("\n");
if(len<480){
printf("recv data content:\n");
for(i=0;i<len;i++)
printf("%02x ",ev->buff[i]);
}
if(0==connected)// 第一次连接
{
printf("read:%d\n%s\n",len,ev->buff);
secWebSocketKey=computeAcceptKey(ev->buff);
shakeHand(fd,secWebSocketKey);
connected=1;
printf("22222 connected is :%d \n",connected);
}
dosomething();
}
#6
每一个连接进入时,如果server允许建立并连接后,记录client的地址。
然后对client进行比对判断,是否是以前已经连接过的。
而5楼的code中,connected对所有的client,不区分不同的client。
然后对client进行比对判断,是否是以前已经连接过的。
而5楼的code中,connected对所有的client,不区分不同的client。
#1
握手动作又不让你去做,tcp底层自己做了
#2
心跳监控连接状态, 即可,
#3
发送心跳包就可以吧
#4
NONO ,
可能是我描述不清楚
HTML5服务器,,第一次客户端连接时,需要一次握手协议,,当该客户端再发数据来时,与服务器不用再握手
当作普通SOCKET处理
可能是我描述不清楚
HTML5服务器,,第一次客户端连接时,需要一次握手协议,,当该客户端再发数据来时,与服务器不用再握手
当作普通SOCKET处理
#5
下面是服务器接受函数的一段代码
如果是某个客户端第一次连接服务器,则建立握手先,以后,该连接除非重新连接服务器再,则不需要握手动作,做普通SOCKET通信
但是,下面代码作判断时,服务器只能与一个客户端建立连接,其他客户端就不能再连接上了,服务建立握手...
当多个客户端存在时,如何判断每一个客户端是否是第一次与服务器连接,以便建立握手?
如果是某个客户端第一次连接服务器,则建立握手先,以后,该连接除非重新连接服务器再,则不需要握手动作,做普通SOCKET通信
但是,下面代码作判断时,服务器只能与一个客户端建立连接,其他客户端就不能再连接上了,服务建立握手...
当多个客户端存在时,如何判断每一个客户端是否是第一次与服务器连接,以便建立握手?
len = recv(fd, ev->buff, sizeof(ev->buff), 0);
printf("---------------------\n");
printf("recv data len: %d\n",len);
printf("---------------------\n");
printf("recv data content: %s\n",ev->buff);
printf("\n");
if(len<480){
printf("recv data content:\n");
for(i=0;i<len;i++)
printf("%02x ",ev->buff[i]);
}
if(0==connected)// 第一次连接
{
printf("read:%d\n%s\n",len,ev->buff);
secWebSocketKey=computeAcceptKey(ev->buff);
shakeHand(fd,secWebSocketKey);
connected=1;
printf("22222 connected is :%d \n",connected);
}
dosomething();
}
#6
每一个连接进入时,如果server允许建立并连接后,记录client的地址。
然后对client进行比对判断,是否是以前已经连接过的。
而5楼的code中,connected对所有的client,不区分不同的client。
然后对client进行比对判断,是否是以前已经连接过的。
而5楼的code中,connected对所有的client,不区分不同的client。