7 extern int atoi(
char *);
18 char msg[] =
"Xinu testing UDP echo";
30 if (nargs == 2 &&
strncmp(args[1],
"--help", 7) == 0) {
31 printf(
"Use: %s REMOTEIP\n\n", args[0]);
33 printf(
"\tBounce a message off a remote UDP echo server\n");
35 printf(
"\tREMOTEIP:\tIP address in dotted decimal\n");
36 printf(
"\t--help\t display this help and exit\n");
43 fprintf(
stderr,
"%s: invalid number of argument(s)\n", args[0]);
55 retval =
atoi(args[2]);
56 if ( (retval <= 0) || (retval > 64535) ) {
78 for (i=0; i<retries; i++) {
79 retval =
udp_send(slot, msg, msglen);
86 retval =
udp_recv(slot, inbuf,
sizeof(inbuf), delay);
90 }
else if (retval ==
SYSERR) {
108 if (retval != msglen) {
110 args[0], msglen, retval);
113 for (i = 0; i < msglen; i++) {
114 if (msg[i] != inbuf[i]) {
121 printf(
"UDP echo test was successful\n");
int32 udp_recv(uid32, char *, int32, uint32)
status udp_send(uid32, char *, int32)
int atoi(char *)
ASCII文字列をint型に変換する。
int32 strncmp(const char *, const char *, int32)
int32 printf(const char *,...)
#define TIMEOUT
システムコールがタイムアウトした場合
int int32
符号あり32ビット整数(int)
int32 delay(int n)
マイクロ秒単位で処理を遅らせる。
shellcmd xsh_udpecho(int nargs, char *args[])
uid32 udp_register(uint32, uint16, uint16)
unsigned short uint16
符号なし16ビット整数(unsigned short)
status udp_release(uid32)
int32 shellcmd
シェルコール関数 返り値の型
int32 fprintf(int, char *,...)
unsigned int uint32
符号なし32ビット整数(unsigned int)
uint32 dot2ip(char *, uint32 *)
int32 strnlen(const char *, uint32)
NULL終端された文字列の長さを返す。NULL終端は長さに含まない。