C# 捕获时出错";“嗯”;带有libpcap的日期时间格式
我用C#编写了一个数据包模拟器,它生成一些UDP数据包并将它们发送到给定的IP地址。模拟器成功地生成数据包并将其发送到我的UBUNTU虚拟机,但目标中存在问题。在C#程序中,数据格式定义为: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"; . . } } 数据包通过
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)接收时没有任何更改。只有月份名称更改为????