STM32/STM8技术william hill官网
直播中

韦薇

7年用户 223经验值
私信 关注
[问答]

F746Discovery LWIP Netconn链接PC服务器正常,链接网络服务异常

问题描述:使用STM32F746Discovery开发板,使用FreeRTOS,LWIP协议,Netconn API在开发板上建立一个TCP客户端去访问远端服务器,在PC上使用网络助手模拟一个远端网络服务器,开发板能够正常连接收发数据,但是,直接将连网的网线插到开发板上,给网络服务器发送特定数据后却收不到服务器返回的数据。
请教各位大神和版主,这种可以和本地pc进行客户端服务器通信但是不能和网络服务器进行通信的问题是什么造成的?谢谢大家!!


建立TCP客户端,连接远端服务器的代码如下:
struct netbuf *TCPRecvbuf;
struct netbuf *buf;
static void http_server_netconn_thread(void *arg)
{
        int i=0;
        char *string[200];
        void *data;
        uint16_t len;
  struct netconn *conn;
  err_t myerr,recv_err;
  struct netbuf *TCPNetbuf;
        ip4_addr_t serverip;
        char Text[] ="GET /BDKJ HTTP/1.0rnUser-Agent: NTRIP GNSSInternetRadio/1.4.10rnAccept: */*rnAuthorization: Basic dXNlcjpwYXNzd29yZA==rnrnrnrn";

        IP4_ADDR(&serverip,180,149,145,238);
//        IP4_ADDR(&serverip,192,168,0,10);
       
        conn = netconn_new(NETCONN_TCP);
       
        netconn_bind(conn,NULL,NULL);
        osDelay(5000);
        myerr = netconn_connect(conn,&serverip,8000);
               
        TCPNetbuf = netbuf_new();


        netbuf_ref(TCPNetbuf,Text,sizeof(Text));
        netconn_write(conn,(void *)&Text,sizeof(Text),NETCONN_NOCOPY);       
        LCD_UsrLog ("%srn", Text);

        netbuf_delete(TCPNetbuf);
//        osDelay(1000);
        while(1)
        {
                while(( recv_err = netconn_recv(conn, &buf)) == ERR_OK)
                {
                        do
                        {
                                //Get the data pointer and length of the data inside a netbuf.
                                netbuf_data(buf, &data, &len);
                                memcpy(string,data,len);
                                LCD_UsrLog ("The Receive data is: %srn", string);
                                memset(string,0,len);
                        }
                        //Move the current data pointer of a packet buffer contained in a netbuf to the next part.
                        while (netbuf_next(buf) >= 0);
                        netbuf_delete(buf);
                }
        }
}

回帖(5)

李富贵

2018-8-20 06:37:53

最佳答案

不要开发板直接连服务器,
试试开发板先经交换机或者路由器,再连接服务器。
举报

蔡妮芩

2018-8-20 07:01:37
你先去确定一下服务器有没有收到你发的数据,再确定一下服务器有没有给你返回数据?!不然先看下链接建立成功了吗?
举报

黄璨

2018-8-20 07:13:41
看看服务器收到你的数据了吗?
收到了是不是格式有问题?
没收到检查下网络配置是否正确
举报

李飞

2018-8-20 07:26:30
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

高若琰

2018-8-20 07:33:58
问题已经解决了吗?解决方法是什么?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分