精华内容
下载资源
问答
  • 使用lwip,客户端连接上服务器时,发送短数据报文的时候,大约10个字节(认证包),发送的返回值是发送OK的,但是在服务器端有的时候却不能收到客户端发送的数据。研究才发现,有的情况,它会认为你这个包太小,不会...

    1.现象如下:

    使用lwip,客户端连接上服务器时,发送短数据报文的时候,大约10个字节(认证包),发送的返回值是发送OK的,但是在服务器端有的时候却不能收到客户端发送的数据。研究才发现,有的情况,它会认为你这个包太小,不会立即发送出去的。如果我们想要不管发多长的字节,都立即发送。那么我们需要设置一下lwip无延时的标志.

    static int nodelay_flag = 1;/*定义无延时flag为1*/
    static int socket_fd = -1;
    
    /*创建一个socket*/
    socket_fd = socket(AF_INET, SOCK_STREAM, 0);
    
    
    /*连接服务器*/
    
    
    /*设置连接参数属性即可*/
    setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (void *)&nodelay_flag , sizeof(nodelay_flag));

    2.关于开启tcp中的keepalive机制

    一般我们做TCP都会定义应用层的心跳包,这个周期根据具体应用来定。但是如果时间比较长,那么我们就判断不了这个客户端是否与服务器处于正常连接的状态,那么可以启动协议中的keepalive机制,这个机制是传输层实现的,是没有应用层的数据的,这个帧称之为探测帧(probe报文)。开启keepalive的代码如下所示:

    static int keepalive_flag = 1;// 开启keepalive属性
    static int keepidle = 60; // 如该连接在60秒内没有任何数据往来,则进行探测
    static int keepinterval = 5;// 探测时发包的时间间隔为5秒
    static int keepcount = 3;// 探测尝试的次数.如果第1次探测包就收到响应了,则后几次的不再发
    static int socket_fd = -1;
    
    
    /*创建一个socket*/
    socket_fd = socket(AF_INET, SOCK_STREAM, 0);
    
    // 打开keepalive功能,需要在执行connect()之前执行
    if(setsockopt(socket_fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepalive_flag, sizeof(keepalive_flag)) < 0)
    {
        printf("set keepalive_flag fail!\r\n");
    }
    
    
    /*连接服务器*/
    
    
    /*设置属性*/
    //设置keepalive各项参数值(需要在connect之后设置)
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPIDLE, (void*)&keepidle , sizeof(keepidle));
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPINTVL, (void *)&keepinterval , sizeof(keepinterval));
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPCNT, (void *)&keepcount , sizeof(keepcount));

     

    展开全文
  • java Https post发送报文

    2016-03-08 13:51:20
    前言: 因为遇到个很奇怪的问题 http调用接口始终不成功 对方说是参数解密失败 因为在本地是OK的 另一台服务器也是OK 代码一样加密结果不一样这显然不可能.经过仔细排查后发现是http请求问题 .想来想去 因为接口是...
    </pre><p>前言: 因为遇到个很奇怪的问题 http调用接口始终不成功 对方说是参数解密失败 因为在本地是OK的 另一台服务器也是OK 代码一样加密结果不一样这显然不可能.经过仔细排查后发现是http请求问题 .想来想去 因为接口是HTTPS 给忽略掉了 我这边还是用的HTTP请求..很想一头撞死在墙上..还怀疑过服务器有问题,对方的安全策略问题 呵呵哒.</p><p>Http请求https地址也会成功但是 出现失败的几率也是很大的,. 参数如果是 map类型的把以下代码注释去掉就OK~</p><p>附送HTTPS post代码:</p><p><pre name="code" class="java">/**
     * 
     * HTTPS请求专用
     * ***/
    public String sendHttps(String url,String json/*,Map<String,String> map*/){
    	logger.info("请求路径::::"+url);
    	logger.info("请求参数::::"+json);
    	HttpClient httpClient = null;
    	HttpPost httpPost = null;
    	String result = null;
    	try{
    		httpClient = new SSLClientUtil();
    		httpPost = new HttpPost(url);
    		//设置参数
    		/*List<NameValuePair> list = new ArrayList<NameValuePair>();
    		Iterator iterator = map.entrySet().iterator();
    		while(iterator.hasNext()){
    			Entry<String,String> elem = (Entry<String, String>) iterator.next();
    			list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));
    		}
    		if(list.size() > 0){
    			UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);
    		}*/
    		httpPost.setEntity(new StringEntity(json, Charset.forName("UTF-8")));
    		HttpResponse response = httpClient.execute(httpPost);
    		if(response != null){
    			HttpEntity resEntity = response.getEntity();
    			if(resEntity != null){
    				result = EntityUtils.toString(resEntity,"UTF-8");
    			}
    		}
    	}catch(Exception ex){
    		ex.printStackTrace();
    	}
    	logger.info("请求返回信息::::"+result);
    	return result;
    }

    SSl类:

    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;
    import org.apache.http.conn.ClientConnectionManager;
    import org.apache.http.conn.scheme.Scheme;
    import org.apache.http.conn.scheme.SchemeRegistry;
    import org.apache.http.conn.ssl.SSLSocketFactory;
    import org.apache.http.impl.client.DefaultHttpClient;
    //用于进行Https请求的HttpClient
    public class SSLClientUtil extends DefaultHttpClient{
    	public SSLClientUtil() throws Exception{
            super();
            SSLContext ctx = SSLContext.getInstance("TLS");
            X509TrustManager tm = new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(X509Certificate[] chain,
                            String authType) throws CertificateException {
                    }
                    @Override
                    public void checkServerTrusted(X509Certificate[] chain,
                            String authType) throws CertificateException {
                    }
                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
            };
            ctx.init(null, new TrustManager[]{tm}, null);
            SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            ClientConnectionManager ccm = this.getConnectionManager();
            SchemeRegistry sr = ccm.getSchemeRegistry();
            sr.register(new Scheme("https", 443, ssf));
        }
    }
    



    展开全文
  • Jmeter中,HTTP request的报文体为一个附件时,如果附件过大,在发送请求报文的时候会失败,办法就是勾选“Use multipart/form-data for POST” 转载于:...

    Jmeter中,HTTP request的报文体为一个附件时,如果附件过大,在发送请求报文的时候会失败,办法就是勾选“Use multipart/form-data for POST”

    转载于:https://www.cnblogs.com/MasterMonkInTemple/p/3312236.html

    展开全文
  • 邻居建立过程失败思考题2.1邻居关系状态在connect与idle之间切换是什么原因造成的?【R1的debug 和邻居详细信息】答:R2路由器在指定源接口时出现错误,将loop 1口指定为loop 0导致。2.2 R1为active,R2为idle有...

    9968ca54b0fdc36367403b551f4a8763.png

    BGP

    1. 拓扑图

    如下所示,两路由器之间环回口通过静态路由互相可达,并配置bgp使用环回口建立邻居关系。

    3c389ac18592b1cfef8d912939ae5700.png
    拓扑图

    2. 邻居建立过程失败思考题

    2.1邻居关系状态在connect与idle之间切换是什么原因造成的?

    【R1的debug 和邻居详细信息】

    e1756d4a5e400208e79cd0056e606b5f.png

    9829c5bbe91fff01717996872f418415.png

    答:R2路由器在指定源接口时出现错误,将loop 1口指定为loop 0导致。

    2.2 R1为active,R2为idle有哪些原因造成?

    952c0c9ccf28d6ee5e11b015036004cc.png
    R1的debug 和邻居详细信息

    fecfdbcc84acd9186f4126ed9b755769.png
    R2的debug和邻居详细信息

    答案可参考下文


    3. BGP邻居建立失败常见情况

    3.1 BGP邻居间认证问题

    双方状态停留:Connect(不论是只有一边配置了认证,还是认证不通过双方都是此状态)

    Dis bgp error为空

    c666990f4b847dcc3b3b6fbe0b6e9143.png
    双方状态

    b33686104f68d5b10b4ea5e957b9e3f3.png
    R7配置认证后,邻居建立未成功事件

    e521400ce2944b8eef545da26f07eea7.png
    R8未配置认证,邻居建立未成功事件

    37c79c2ef7789ce51670d117dcd09e8a.png

    3.2 BGP环回建邻居无路由

    3.21 BGP双方环回建邻居,两端均无路由

    双方状态停留:IDLE(R7与R8为Ebgp邻居,在保证跳数、发出源正确的前提下模拟两端环回口均无路由去往对端的情况)

    37c79c2ef7789ce51670d117dcd09e8a.png
    R7发出的事件

    6f96e334f9dd6c911160197a6b416c91.png
    R7停留状态

    461628d7bc00c20c77284860855d487e.png
    R8停留状态

    3.22 BGP双方环回建邻居,一端有去往对端环回路由

    双方状态停留:IDLE(未配置路由端)、Connect(配置路由端)

    5f135e746aa0c95043be81712524d507.png
    R8配置路由可去往R7环回

    5c1e3cabfc7b4ae4aaffd34a6be96733.png
    R7未配置路由的状态

    07db76ada87eca58e79c76918b395c78.png
    R8配置路由的状态

    3.23 BGP双方环回建邻居,一端路由配置错误

    双方状态停留:Connect(配置路由错误端)、Connect(配置正确路由端)

    注意:这里存在两种情况!!!

    第一:配置错误端设备配置的静态路由中下一跳与互联接口属于同一网段,但该地址不存在,这种情况,bgp邻居会停止在connect。

    第二:配置错误端设备配置的静态路由中下一跳与互联接口不属于同一网段,并且该地址在本设备不存在,也没有路由去往该地址,bgp邻居会停止在idle。

    例如R7(G0/0/0,ip:78.1.1.7/24)--------R8(G0/0/0,ip:78.1.1.8/24)

    R7与R8都使用环回口建立邻居,在跳数、指定源都正确前提下,为保证双方环回口互通,需配置静态路由。

    R8配置静态路由:ip route-s 7.7.7.7 32 78.1.1.9 则状态停留connect

    若R8配置静态路由:ip route-s 7.7.7.7 32 1.1.1.1 则状态停留idle

    745b9d08aa9fd0e4765fab723efb57bc.png
    R7配置错误的路由触发的事件

    40f23e41ae7bbe9956add035dc4240c9.png
    R7配置错误路由停留的状态

    43765117c98f68cc40979e5ff6a30491.png
    R8停留的状态

    3.24 路由配置完成,双方状态依旧停留在Connect

    可能由于在配置正确的路由之前已经配置了一份错误的路由导致,需查看配置的静态路由后,将其删除。

    261fdb8aa820531a755940d86f4a0e68.png

    3.3 BGP指定源口错误

    双方状态停留:Connect(配置错误端)、Active(配置正确端)

    5f70db0b36775f3a2ac834aa9fe61ca2.png
    R7配置错误指定源口事件

    9ac54851d7076504c2d1d10d50269c2b.png
    R7停留状态

    8710b6cf8087362e3ea3a1b6a43f6f53.png
    R8停留状态

    3.4 补充小知识

    3.41物理口采用认证不影响环回口建邻居

    IBGP邻居采用物理口和环回口两种方式建立邻居

    物理口使用认证,环回口不使用认证可正常建立邻居

    9ccaeced928c4386540906b20d4fbf1f.png

    3.42 环回口与物理口可建立邻居

    R7采用环回口与R8互联的物理口建立邻居

    R8采用与R7互联物理口与R7环回口建立邻居

    注意:双方均采用环回口与对端物理口建邻居则不成功

    00329fb94d6709336d4864550f0913b2.png
    R7使用环回与R8物理建邻居

    6eb7ab988dc998859af10f7ad85c9179.png
    环回与物理可正常建立邻居

    3.5 BGP邻居间AS不匹配

    双方状态停留:IDLE(配置错误端)、IDLE(配置正确端)

    若由于AS指定错误导致的该情况,在查看BGP状态时双方会一直停留在IDLE ,但通过查看双方触发的事件发现状态已经从IDLE到达了OpenSent状态,在交互Open报文时,发现AS错误,发送Notification报文回到IDLE状态。

    OpenSent状态交互的报文会查看AS、BGP identifier、(Version、Holdtime可自动协商,不影响邻居)

    ac33cc8b46e506ea83524934432cba2a.png
    R7与R8建邻居配置错误的AS

    21a5de084a4bcc03044910e06b89220e.png
    R7配置错误的邻居AS事件

    29c1d2c9a092ae3e37b22927bc75ccab.png
    open报文协商的内容

    76b286b414443307953af7c62f80c7cb.png
    tcp建立和断开过程

    三次握手、交互open、fin断开

    3.6 Bgp邻居间router id冲突

    双方状态停留:IDLE(配置错误端)、IDLE(配置正确端)

    9d432979a7eec7fc199546b0815164f1.png
    R7配置与R8一致的Router id

    2f4c380c9262d4d66cfaf6dd59c79add.png
    R7停留状态

    ae80e4dde956bbd96c5c0e4b994f8ead.png
    R8停留状态

    3.7 物理地址冲突(使用环回口建立邻居)

    双方状态停留:IDLE(配置错误端)、Connect(配置正确端)

    a34019c91e2be4cb30b8505789692a98.png
    R8配置与R7一致的物理口IP触发事件

    ef5c15b15e46ae6c79ae854464917f29.png
    R7停留状态

    4705d8dceb57e4221df8ddbab7cf0d13.png
    R8配置错误物理口IP停留状态

    3.8 掩码不匹配(不在一个广播域)

    双方状态停留:IDLE(配置错误端)、Connect(配置正确端)

    R7配置78.1.1.7/24

    R8配置78.1.2.8/24

    2e8972f42b18f3fa03a2a7439c690966.png
    R8在与R7互联接口配置错误网段地址

    ef39dbe78dc228eed80dd4f90997f86f.png
    R7停留状态

    637d187ed1cda4c85765c268513cb030.png
    R8停留状态

    3.9keepalive和 holdtime不一致

    如下所示,R8将keepalilve和holdtime配置为120s和360s,R7接收到后会与R8协商,最终(Negotiated)采用最低的keepalive和holdtime,不影响邻居建立。

    0c14be1343942158c940d4a74fcda9ce.png
    holdtime和keepalive不一致会协商最终建立邻居

    3.10 peer地址不存在

    双方状态停留:Connect(错误端)、Active

    注意:如果你peer一个不存在的地址,但是配置了静态路由(下一跳为对端物理口或者不存在的地址),则状态会停留在active。

    f2c23021ba49f85fd1abf9d847cee449.png
    R7开启debug event

    7acea364635a57927c0e99b888334102.png
    R7配置错误PEER地址BGP状态

    cb718f52b81852d8b370797fe1ddc8b3.png
    R8的BGP状态

    3.11Ebgp邻居跳数问题

    双方状态停留:IDLE(配置错误端)、IDLE(配置正确端)

    a2ae87991100973b7dabb4366be40327.png
    R7环回口以跳数1与R8环回口建邻居触发事件

    0e3595c1b53e669260be414d5fab598b.png
    R7配置错误跳数停留状态

    c7dc9c8a80d92682f34e34a193664172.png
    R8停留状态

    3.12双方环回口与物理口建邻居

    双方状态停留:Active(配置错误端)、Active(配置正确端)

    R7与R8都使用自身环回口与对端物理口建邻居

    注意:若R7用物理口与R8物理口建邻居,R8用环回口与R7环回口建邻居,同样两端停留在Active。

    99e29f10c5dd79ac33de391fd536c726.png
    R7触发事件

    60c0c591d01edc10e1da61fe46b41707.png
    R7停留状态

    f06be16eff321f698d85173f10af59d7.png
    R8停留状态

    总结

    cb76a6046f6a19469652ed6422ef9065.png
    bgp邻居建立失败总结

    处于IDLE和Connect状态下,首先检查路由是否可达,这能排除80%问题,其次根据上图所示排查其余问题。

    展开全文
  • 请教个问题,压测一个接口但这个接口调用支付宝RSA加密的公钥私钥进行验签,现在问题是使用LR发送请求报文验签失败,有什么方法处理这个验签吗?
  • 本地机发出SYN收到服务器SYN/ACK包,但是本地返回了RST包。请问怎么才能拦截这个RST 包 试了有人说的iptables也失败了 iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP 在此请教大神
  • 怎么也发不出去。![图片说明](https://img-ask.csdn.net/upload/202005/12/1589270628_237161.png) ![图片说明](https://img-ask.csdn.net/upload/202005/12/1589270709_513851.png) ...
  • CAN为什么会发送失败

    千次阅读 2017-10-28 09:54:21
    CAN总线调试过程中出现报文发送失败,很多工程师都对此只知其一不知其二,这里就CAN报文发送失败的问题我们来做一次探讨。 在了解CAN报文为什么会发送失败之前我们先看看一条正确的CAN报文到底应该是怎么样...
  • Qt实现udp发送和接收报文,有效性判断,解析报文数据,调试中如遇到通信失败,尝试关闭防火墙、关闭其他无关网卡,尤其是虚拟机网卡。 UdpCenter.h #ifndef UDPCENTER_H #define UDPCENTER_H #include <QObject&...
  • 上一篇文章说道在用python的suds库的时候,发的中文总是乱码(windows下还总是encode失败,真是杯具),无奈产品经理又死活都要求是中文,今天研究了一天,总算是搞定了。 说一下定位的过程。1.先拿一段php的soap代码...
  • 服务器的初始化(监听阶段)(1)调用socket函数创建文件描述符(直接设置端口)或者使用bind函数绑定端 口号或者ip函数(端口占用则会绑定失败)(2)调用listen函数声明当前这个文件描述符做为一个服务器的文件...
  • 一、BGP路由协议常见故障BGP邻居关系无法建立已经建立好的BGP邻居关系又失败了BGP路由无法发布路由选择不一致二、BGP路由协议故障排查方法1、BGP邻居关系无法建立查看是否配置了正确的邻居、AS号。检查邻居是否能...
  • Android 部分机型有时UDP消息发送失败

    千次阅读 2016-12-25 17:32:20
    由于在发送报文之前,监听了30023端口,用于接收数据。尽管再发送报之前已经关闭了该socket 在发送udp报文时,指定了源端口也是30023 导致报文无法正常发出,随机源端口,发送成功。 分析:尽管socket已经close...
  • 环境拓扑: ...FW1收到FW2发送的请求后,返回的响应报文是Informational 报文: 原因: INVALID-ID-INFORMATION(18)指对端发送的加密算法或者认证算法或者对等体ID和本端的配置不一致。 ...
  • 前言:前几天在B站上面,看到了一个使用C/C++...具体效果:注意:爬取过程中,出现了几个time out,但是也不影响整个爬虫的工作(出现异常的图片,可能会损坏,但是几百张失败一两次还是可以接受的),所以这里也就...
  • 过程:一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。目标不可达,源抑制和超时...
  • 前言说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。顾名思义就是证明是否还...所以需要发送一段很小的报文告诉对方“我还活着”。同时还有另外几个目的:服务端检测到某个客户...
  • ...每字段以\t分隔,每行以\n结尾$...is_resource($fp)){echo "打开文件".$inputfile."失败,分析日志程序终止";exit(1);}while(!feof($fp)){$row = fgets($fp,4096);str_replace(array("\r","\n"),array("",""),$r...
  • 在做jmeter发送json报文中存在转义字符的情况下例如:{“method”:“{\“a\”:\"${__RandomString(15,1234567890,num)}\"}”},报文经过jmeter做过一次转换,当发送至服务器端时会报无法解析json串。 在查看结...
  • <p>/服务器发送的server key exchange</em>/ unsigned char sig_real[]= { 0x30,0x45,0x02,0x20,0x51,0x57,0x16,0xc4,0x1c,0xd7, 0xe5,0x34,0x18,0xfc,0x71,0xde,0xb9,0xd6,0xe5,0x02,0x44,0x0a,0x09,0x7f,0x...
  • 在实际项目中经常遇到报文对接问题,而消息发送失败,尤其是第三方作为服务端,客户端需要符合他们的报文格式修改报文常常头疼,鉴于此,文中封装一个类,轻松修改符合第三方要求的报文,希望能对你有帮助
  • RTCP 协议的 NACK 报文

    2020-09-13 17:23:52
    接收方定时把所有未收到的包序号通过反馈报文通知到发送方进行重传。 相对ARQ带来的改进:减少的反馈包的频率和带宽占用,同时也能比较及时地通知发送方进行丢包重传。 NACK 报文的定义在[rfc4585]文档中定义。 ...
  • 第一台计算机发送报文之后会启动一个定时器,在超时之后未收到服务器端的确认,会再次发送SYN请求, 每次尝试的时间会是第一次的二倍,如果总的总尝试时间为75秒,此次建立链接失败。 •第二次:服务器端收到...
  • ICMP差错报告报文

    2017-09-18 10:22:00
    当出现以上六种情况时就向源站发送终点不可达报文。 端口不可达:UDP的规则之一是:如果收到UDP数据报而且目的端口与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文。 源站抑制:当路由器或...
  • HTTP(6):报文首部

    2020-07-19 16:34:16
    请求首部字段:从客户端向服务器端发送请求报文时使用的首部,补充了请求的附加内容,客户端信息、响应内容相关优先级等信息; 响应首部字段:从服务器端向客户端返回响应报文时使用的首部,补充了响应的附加内容,...
  • webservice报文传输数据

    2019-10-11 13:23:48
    * 扫描logs_ahszbtbxxw 待发送发送失败且次数不超过3次的公告 */ // @Transactional(rollbackFor = Exception.class) @Override public void selLogsNoSuc(){ List noSucDataList = winBidCan...
  •  在开发爬虫过程中,遇见在发送云南电信短信验证码时,返回的报文中只有而无相应的xml情况。绞尽脑汁没想明白,通用的代码怎么到这里行不通了呢。 在怀疑完人生后,还是要冷静下来仔细分析的。绕地球走了一圈的...
  • 3.5关闭一个连接CLOSE是表示“我已经没有数据要发送”的操作。关闭一个全双工的连接的概念属于含糊的解释,当然,既然它不清楚如何对待连接的接收端。我们选择以一个单工方式处理CLOSE。关闭连接的用户可以继续接收...
  • 本地主机上没有进程在监听8080端口,TCP链接建立失败,浏览器很快就获知了这一事实并返回错误信息。 实验二 开启端口监听代码,监听8080端口,并在chrome游览器中访问 http://localhost:8080/ 如上,浏览器很快和...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 280
精华内容 112
关键字:

发送报文失败