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定位的補充, 從而增加了系統的可靠性。
評論
查看更多