2020-04-03

STM32最小系统板与服务器之间的通信 求指导

 最近在做毕业设计,题目基于移动网络的信息传输。背景:用stm32最小系统板连到GPS模块,获取经纬度,(然后将经纬度发送给服务器,服务器返回给单片机该景点具体信息。)单片机连接的语音模块再播放该段信息。
   我做的是括号里内容。目前只写了服务器端程序。在Windows系统下用c++写的。这段程序目前只能用于PC直接通信,实现功能是客户端假如发送景点名称,可以返回给客户端景点具体信息。
     然后就不知道该怎么修改了,也不知道现有客户端程序能否和单片机通信。
     程序如下:

#define WIN32_lEAN_AND_MEAN
#include<windows.h>
#include<winSock2.h>
#pragma comment (lib,“ws2_32.lib”)
#include<stdio.h>
#include<string.h>
int main()
{//启动Windows socket 环境
WORD ver=MAKEWORD (2.2);
WSADATE dat;
WSAStartup(ver,&dat);
// 1.建立一个socket套接字
SOCKET _sock=socket(AF_INET,sock_STREAM,IPPROTO_TCP);
//2.bind绑定用于客户端接受客户端连接的网络端口sockaddr_in_sin={};
_sin.sin_family=AF_INET;
_sin.sin_port=htons(4567);
_sin.sin_addr.s_un.s_addr=inet_addr(" . . . “);
bind(_sock(sockaddr*)&_sin,sizeof(_sin);
if(SOCKET_ERROR==bind(_sock(sockaddr*)&_sin,sizeof(_sin))
{printf (“绑定网络端口失败”);}
else{printf (“绑定网络端口成功”);}
//3.listen监听网络端口
if(SOCKET_ERROR==listen (_sock,2)
{printf (“监听网络端口失败”);}
else{printf (“监听网络端口成功”);}
//4.accept等待接受客户端消息
sockaddr_in clientAddr={};
int AddrLen=sizeof (sockaddr_in);
SOCKET_clientSock=INVALID_SOCKET;
_clientSock=accept (_sock,(sockaddr*)&clientAddr,&AddrLen);
if (INVALID_SOCKET==_clientSock)
{printf(“客户端无效\n”);}
printf(“再次访问\n”);
char _recvBuf[256]={};
while(true)
{//5.接收客户端数据
int newlen=recv (_clientsock,_recvBuf,256,0);if(newlen<=0)
{printf(“导游仪工作结束”\n);break;}
printf (“收到信息:%s \n”,_recvBuf);
//处理请求if (0==strcmp (_recvBuf,“青龙峡”))
{char ch1Buf[]="青山绿水古长城,且观北方小三峡—畅游青龙峡 集田园风光、山川秀色、青山绿谷、长城古貌为一体的旅游观光、度假休闲胜地。”
send(_clientSock,ch1Buf,strlen (ch1Buf)+1,0);}
else if (0==strcmp (_recvBuf,“青龙峡2”))
{char ch2Buf[]="独特的塞外气候,凉爽宜人,是人们远离闹市喧哗,寻觅山水静地,回归山野自然,旅游观光度假的最佳选择。"
send(_clientSock,ch2Buf,strlen (ch2Buf)+1,0);}else{char ch3Buf[]="无该地信息。"
send(_clientSock,ch3Buf,strlen (ch3Buf)+1,0);}}
//关闭套接字closesocket (_sock);
//清除Windows socket 环境
WSACleanup ();
getchar();
return 0;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值