mirror of
https://github.com/rcore-os/rCore-Tutorial-v3.git
synced 2024-11-22 01:16:26 +04:00
Add a udp program and a ping test script
This commit is contained in:
parent
586bad3fac
commit
bc3858bdb5
18
ping.py
Normal file
18
ping.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
addr = ('localhost', 26099)
|
||||||
|
sock.bind(addr)
|
||||||
|
|
||||||
|
|
||||||
|
print("pinging...", file=sys.stderr)
|
||||||
|
while True:
|
||||||
|
buf, raddr = sock.recvfrom(4096)
|
||||||
|
print("receive: " + buf.decode("utf-8"))
|
||||||
|
buf = "this is a ping to port 6200!".encode('utf-8')
|
||||||
|
sock.sendto(buf, ("127.0.0.1", 6200))
|
||||||
|
buf = "this is a ping to reply!".encode('utf-8')
|
||||||
|
sock.sendto(buf, raddr)
|
||||||
|
time.sleep(1)
|
45
user/src/bin/udp.rs
Normal file
45
user/src/bin/udp.rs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#![no_std]
|
||||||
|
#![no_main]
|
||||||
|
|
||||||
|
use alloc::string::String;
|
||||||
|
use user_lib::{connect, write, read};
|
||||||
|
|
||||||
|
#[macro_use]
|
||||||
|
extern crate user_lib;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate alloc;
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub fn main() -> i32 {
|
||||||
|
println!("udp test open!");
|
||||||
|
|
||||||
|
let udp_fd = connect(10 << 24 | 0 << 16 | 2 << 8 | 2, 2001, 26099);
|
||||||
|
|
||||||
|
if udp_fd < 0 {
|
||||||
|
println!("failed to create udp connection.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let buf = "Hello rCoreOS user program!";
|
||||||
|
|
||||||
|
println!("send <{}>", buf);
|
||||||
|
|
||||||
|
write(udp_fd as usize, buf.as_bytes());
|
||||||
|
|
||||||
|
println!("udp send done, waiting for reply.");
|
||||||
|
|
||||||
|
let mut buf = vec![0u8; 1024];
|
||||||
|
|
||||||
|
let len = read(udp_fd as usize, &mut buf);
|
||||||
|
|
||||||
|
if len < 0 {
|
||||||
|
println!("can't receive udp packet");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let recv_str = String::from_utf8_lossy(&buf[..len as usize]);
|
||||||
|
|
||||||
|
println!("receive reply <{}>", recv_str);
|
||||||
|
|
||||||
|
0
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user