DWORD WINAPI AnswerThread ( LPVOIDlparam) //收发线程入口
{//创建线程时把服务器建立的新套接字传给lparam
SOCKET ClientSocket = ( SOCKET) ( LPVOID)lparam;
int bytesRecv;char sendbuf [ 32] = “ ” ;char
recvbuf [32] =“” ;
while (1)
{bytesRecv=SOCKET_ERROR;
for ( int i =0;i 《 ( int) strlen ( recvbuf) ;i ++ )
{recvbuf [i] =‘’;}
while (bytesRecv==SOCKET_ERROR)
{ bytesRecv =recv ( ClientSocket,recvbuf,32,0) ;} //⑤接收电子站牌客户端的数据
…
send ( ClientSocket,recvbuf,strlen ( recvbuf) ,0) ; //⑥向电子站牌客户端发送数据
}
}
…
WSAStartup (MAKEWORD (2,2) ,&wsaData) ;//初始化Winsock
socket ( AF_INET,SOCK_STREAM,IPPROTO_TCP) ;//①创建一个监听socket
bind ( m_socket, ( SOCKADDR*) &service,sizeof(service)) //②绑定套接字
listen (m_socket,20) //③监听套接字
SOCKET AcceptSocket;
while (1) //一直等待客户端的请求, 请求到来后,建立新的连接套接字
{ AcceptSocket=SOCKET_ERROR;
while (AcceptSocket==SOCKET_ERROR)
{ AcceptSocket =accept ( m_socket,NULL,NULL) ;} /*④等待客户请求到来,请求到来后,接受连接请求, 返回一个新的对应此次连接的socket*/
hThread =CreateThread ( NULL,NULL,AnswerThread, ( LPVOID) AcceptSocket,0,&dwThreadId) ;} /*创建新线程, 将新的连接套接字传给AnswerThread入口函数*/
}
4 结束语
本系统中, 公交车与电子站牌通过ZigBee网络实现信息交互, 电子站牌与监控中心通过GPRS网络实现信息交互。公交车上用价格低廉的ZigBee模块取代现有智能公交系统中的车载GPRS模块, 可节约硬件成本, 而公交车与电子站牌之间的ZigBee网络通信则可实现公交车的定位, 以作为GPS定位的补充, 从而增加了系统的可靠性。
评论
查看更多