小编ers*_*zcz的帖子

简单的UDP示例,用于从同一个套接字发送和接收数据

出于某种原因,我很难从同一个套接字发送和接收数据.无论如何这里是我的客户端代码:

var client = new UdpClient();
IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000); // endpoint where server is listening (testing localy)
client.Connect(ep); 

// send data
client.Send(new byte[] { 1, 2, 3, 4, 5 }, 5);

// then receive data
var receivedData = client.Receive(ref ep);  // Exception: An existing connection was forcibly closed by the remote host
Run Code Online (Sandbox Code Playgroud)

基本上我想创建一个协议,我发送一个udp数据包,然后我期待一个响应.就像每个请求的HTTP协议一样,都有响应.如果服务器位于不同的计算机上,则此代码有效.可能存在服务器和客户端在同一台计算机上的情况.

这是服务器:

UdpClient udpServer = new UdpClient(UDP_LISTEN_PORT);

while (true)
{
    var groupEP = new IPEndPoint(IPAddress.Any, 11000); // listen on any port
    var data = …
Run Code Online (Sandbox Code Playgroud)

c# udp

41
推荐指数
1
解决办法
15万
查看次数

如何告诉/强制GNU ld将一个节/符号放在输出ELF文件的特定部分?

这将是一个很长的,所以抓住一些咖啡/茶/ yerba.

摘要

如何告诉/强制GNU ld将一个节/符号放在输出ELF文件的特定部分?

具体来说,我不是询问符号的物理/加载地址,而是询问文件中的偏移量.

背景

我正在尝试使用真实世界的BSD内核并使其与Multiboot兼容并由GRUB引导.为了使ELF图像与Multiboot兼容并且可以通过GRUB识别,需要将幻数(0x1BADB002)嵌入到文件的第一个8KiB中.

我指的是Multiboot 0.6.96.

由于原始内核是相当大的代码,我将使用基于OSDev wikiBare Bones内核的示例.由于该内核已经符合Multiboot标准,因此我将使用 extra_symbolwith值0xCAFEBABE作为我的问题的示例.

boot.s 包含:

.set CAFEBABE, 0xCAFEBABE
; ... snip ...
.section .extras
extra_symbol:
    .long CAFEBABE
Run Code Online (Sandbox Code Playgroud)

额外的符号 .text

最简单的选择是将具有该值的符号放在.text 其他任何内容之前:

.text BLOCK(4K) : ALIGN(4K)
{
    *(.extras)
    *(.multiboot)
    *(.text)
}
Run Code Online (Sandbox Code Playgroud)

这对于示例来说很好,但是如果真正的BSD内核.text 在文件中的0x2000(8KiB)之后启动.这种方法不是一种选择.

之前的额外部分.text

另一种选择是将整个.extras部分放在前面.text.在我的天真,我希望.text在链接器脚本之前放置这样的部分也会使它出现在输出ELF的前面:

SECTIONS
{
    // ... some stuff ...

    .extras : { *(.extras) }

    .text BLOCK(4K) …
Run Code Online (Sandbox Code Playgroud)

linker elf ld multiboot

13
推荐指数
1
解决办法
3500
查看次数

是否有像Haskell或OCaml可用的跟踪调试器`dbg`?

是否有dbg可用于Haskell或OCaml 的跟踪调试器?

非正式地说,它的printf风格调试只是更好,在运行时完全可配置.本质上,用户可以在系统运行时注册跟踪处理程序,这将在运行时支持的一组操作中对每个操作进行调用(例如,在每个函数调用/返回时,在发送/接收的每个消息上等) .这样的处理程序可以记录每个操作,这给出了系统(部分)中发生的所有步骤的良好序列.

此机制可用于记录/调试,分析系统的某些部分,但在许多情况下,仅用于发现新的(程序员未知)系统的工作方式.

erlang ocaml haskell dbg

5
推荐指数
1
解决办法
221
查看次数

标签 统计

c# ×1

dbg ×1

elf ×1

erlang ×1

haskell ×1

ld ×1

linker ×1

multiboot ×1

ocaml ×1

udp ×1