你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
hswkcg 提问时间:2018-1-15 15:56 /
问题描述:使用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.0\r\nUser-Agent: NTRIP GNSSInternetRadio/1.4.10\r\nAccept: */*\r\nAuthorization: Basic dXNlcjpwYXNzd29yZA==\r\n\r\n\r\n\r\n";

        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 ("%s\r\n", 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: %s\r\n", 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);
                }
        }
}

收藏 1 评论5 发布时间:2018-1-15 15:56

举报

5个回答
无薪税绵 回答时间:2018-2-7 09:47:27
不要开发板直接连服务器,
试试开发板先经交换机或者路由器,再连接服务器。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

衔胆栖冰 回答时间:2018-2-7 10:55:59
你先去确定一下服务器有没有收到你发的数据,再确定一下服务器有没有给你返回数据?!不然先看下链接建立成功了吗?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

中山无雪 回答时间:2018-2-7 13:34:26
看看服务器收到你的数据了吗?
收到了是不是格式有问题?
没收到检查下网络配置是否正确

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-2-7 18:48:29
主要看看网络连接有没有正确,你就使用网络助手去做, 不用再接了

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

fjasio 回答时间:2018-2-28 17:51:37
问题已经解决了吗?解决方法是什么?

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版