小编Pav*_*lev的帖子

当其他协议似乎已关闭时,如何解析DNS名称解析?

我们正在尝试实施基于Moxa UC-7112-LX嵌入式计算机(uClinux OS)的软件.我们使用Cinteron MC52i GSM调制解调器(常规GPRS服务)和标准pppd连接到互联网.

在连接之后,一切似乎都很好.Ping实用程序正常工作,程序中的Socket函数也正常工作.然而,经过一段时间后,ppp连接以一种非常特殊的方式破碎.这些是这种情况的症状:

  • 当我使用某个主机名作为参数调用ping实用程序时,系统能够解析它的IP并开始发送ICMP数据包但没有响应.我正在尝试不同的Web资源名称,以便系统无法缓存其地址或其他内容.无论我选择什么,系统都能正确解析IP,但无法获得任何ping响应.
  • connect()write()在我的应用功能,给没有错误回报,但,当涉及到read()的功能,并将errno设置返回ECONNRESET(连接被对方复位).该程序使用标准套接字函数(TCP协议)
  • ppp链接显示为running(ifconfig ppp0)

所以,我的情况是:链接是否足以维护DNS解析服务(UDP工作?)但不足以运行TCP连接并接收ping回声...

情况不会一直出现.有时系统可以正常工作几天而没有任何问题.无论何时出现问题,简单的重置都可以解决所有问题.

我知道我们使用的系统非常奇特,这里描述的情况可能与一些错误的tcp堆栈或pppd实现有关.考虑到系统是由制造商预先配置的,我没有任何选项来重建/更改操作系统固件.

我仍然希望有人在任何类似Linux的系统上看到类似的情况.有没有办法测试为什么DNS名称解析工作,而其他网络的东西没有?是否可以使用某些pppd设置删除此类连接状态?

编辑:

首先,我想解决本地缓存IP地址的可能性.我没有dig实用程序,我不知道如何检查哪个主机给出了结果getaddrinfo().我仍然确定地址没有被缓存,因为我试图ping完全随机的URL.另外,由于GPRS响应时间较慢,因此在开始发送数据包之前,没有必要使用时间测量实用程序来确定ping需要1-2秒或更长时间来解析IP.此外ncsd,BIND或任何DNS服务器不在本地计算机上运行.我知道您可能不会将其视为证据,但这就是我在系统上提供的实用工具集.

我想提供一些有关互联网连接操作的其他信息.

正常连接状态

rc系统加载时的脚本运行另一个脚本作为后台进程:

sh /etc/connect &
Run Code Online (Sandbox Code Playgroud)

connect脚本如下:

#!/bin/sh
echo First connect attempt > /etc/ppp/conn.info
while true
do
date >> /etc/ppp/conn.info
pppd call mts
echo Reconnecting... >> /etc/ppp/conn.info
done
Run Code Online (Sandbox Code Playgroud)

我在这里做了一个循环的原因很简单:连接持续了几个小时,然后它总是断开.不幸的是我的实现pppd不支持logfile选项(所以我不明白它为什么会被破坏).坚持似乎也不起作用,所以我来到上面的连接脚本.pppd选项是:

/dev/ttyM0 115200 crtscts
connect 'chat -f /etc/ppp/peers/mts.chat'
noauth
user …
Run Code Online (Sandbox Code Playgroud)

c sockets linux networking tcp

3
推荐指数
1
解决办法
1097
查看次数

如何在iText7中将表标题单元格标记为TH而不是TD?

我需要在iText7中创建符合PDF / UA的文档。最重要的要求是标记所有内容。启用标记(通过调用PdfDocument.SetTagged()方法)后,大多数添加到文档中的元素将获得正确的标记。

问题在于表头单元格的标记。根据ISO 32000-1:2008,表标头单元必须标记为TH,表数据单元必须标记为TD(14.8.4.2.4。表元素,表337)。

iText允许使用Table.AddHeaderCell()Table.AddCell()方法区分标题单元格和常规单元格。此机制可以为行组正确创建THead和TBody标签。不幸的是,细胞本身总是被标记为TD。

这是用于生成表的示例代码:

//var pdfDoc = new PdfDocument(...)

pdfDoc.SetTagged();

var doc = new Document(pdfDoc);

var table = new Table(2);
table.AddHeaderCell("Header 0");
table.AddHeaderCell("Header 1");
table.AddCell("Data 0");
table.AddCell("Data 1");

doc.Add(table);
doc.Close();
Run Code Online (Sandbox Code Playgroud)

这是我们得到的标记结构的示例:

<Table>
    <THead>
        <TR>
            <TD>              //must be TH!
                <P>
                    "Header 0"
            <TD>
                <P>
                    "Header 1"
    <TBody>
        <TR>
            <TD>              //TD is correct here
                <P>
                    "Data 0"
            <TD>
                <P>
                    "Data 1"
Run Code Online (Sandbox Code Playgroud)

AddHeaderCell()使用方法时,iText是否可以生成TH标签?

我正在使用iText 7.0.0 for .NET(社区版)

itext7

0
推荐指数
1
解决办法
327
查看次数

标签 统计

c ×1

itext7 ×1

linux ×1

networking ×1

sockets ×1

tcp ×1