Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 捕获时出错";“嗯”;带有libpcap的日期时间格式_C#_Linux_Date Format_Libpcap_Packet Capture - Fatal编程技术网

C# 捕获时出错";“嗯”;带有libpcap的日期时间格式

C# 捕获时出错";“嗯”;带有libpcap的日期时间格式,c#,linux,date-format,libpcap,packet-capture,C#,Linux,Date Format,Libpcap,Packet Capture,我用C#编写了一个数据包模拟器,它生成一些UDP数据包并将它们发送到给定的IP地址。模拟器成功地生成数据包并将其发送到我的UBUNTU虚拟机,但目标中存在问题。在C#程序中,数据格式定义为: namespace PacketSimulator { static class Program { public static string DateFormat = "MMM dd HH:mm:ss"; . . } } 数据包通过

我用C#编写了一个数据包模拟器,它生成一些UDP数据包并将它们发送到给定的IP地址。模拟器成功地生成数据包并将其发送到我的UBUNTU虚拟机,但目标中存在问题。在C#程序中,数据格式定义为:

namespace PacketSimulator
{
    static class Program
    {
        public static string DateFormat = "MMM dd HH:mm:ss";
        .
        .
    }
}
数据包通过以下方式发送:

namespace PacketSimulator
{
    class ConnectionInfo
    {
        public DateTime DATE_TIME;
        public override string ToString()
        {
            return DATE_TIME.ToString(Program.DateFormat) + " " + "10.0.72.45 " + ....

        }
     }
}
但在Linux方面,我可以捕获的内容与我发送的内容略有不同:

???? 26 18:17:10 10.0.72.45
在C#程序中,月份格式定义为“MMM”(三个字母的月份名称),但Lipcap捕获的是四个字母的文本,如

我需要的是以定义的格式接收数据包,而不是四个?签字

提前感谢您的建议。

MSDN:

“MMM”自定义格式说明符表示 这个月。检索月份的本地化缩写名称 从 当前或指定的区域性

尝试传入
CultureInfo

return DATE_TIME.ToString(Program.DateFormat,CultureInfo.InvariantCulture) + " " + "10.0.72.45 " + ....

如果失败,那么一定是由于某种原因,libpcap无法访问DateTimeFormatInfo.缩写月名。

1。发送数据包时,您如何对文本进行编码?这和接收端匹配吗?2.你看过电线上的东西了吗?3.通常对于IPC来说,日期和时间的最佳格式是ISO-8601:
yyyy-MM-ddTHH:MM:ss
,它避免了其他格式的所有歧义和本地化问题。@Richard 1-不使用编码。2-我使用问题主体3中提到的libpcap库-当然要感谢使用了编码(它可能是隐式的,但确实存在):UDP数据包的内容是一个八位字节数组,但.NET中的字符串不是字节数组,因此必须进行转换-编码。您需要对此进行控制。@Richard有些文本(例如10.0.72.45)接收时没有任何更改。只有月份名称更改为????