情報ネットワーク

UDP通信プログラム
課題と回答例
岡村耕二
http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/
課題 1. “Hello World” という文字列を送信して、それを受信、
表示するプログラムを作成せよ。
// 送信側
{
char *ch="Hello World";
write(sock,ch,1024);
}
// 受信側
{
char ch[1024];
bzero(ch,1024);
read(sock,ch,1024);
printf("%s\n",ch);
}
情報ネットワーク
2
課題 2.入力した文字列を送信して受信者側で表示し、EOF で
終了するプログラムを作成せよ。
// 送信側
// 受信側
while(1){
char ch;
while(1){
char ch;
read(sock, &ch, sizeof(char));
ch=getchar();
write(sock,&ch,sizeof(char));
if(ch==EOF)
break;
if(ch==EOF)
break;
printf("%c",ch);
fflush(stdout);
}
}
情報ネットワーク
3
課題 3. 送信相手をFQDNで指定できるようにせよ。
ヒント: gethostbyname() を使う。
#include <stdio.h>
#include <strings.h>
#include <string.h>
host=gethostbyname(arg[1]);
if(host!=NULL)
memcpy((char *)&s_addr,
(char *)host->h_addr,
host->h_length);
else
s_addr = inet_addr(arg[1]);
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
main(narg,arg)
int narg;
char **arg;
{
int sock;
int s_addr;
unsigned short port;
struct sockaddr_in saddr;
struct hostent *host, *gethostbyname();
情報ネットワーク
4
「.」の入力で終了するプログラム
#include<stdio.h>
#include <strings.h>
#include <string.h>
main()
{
char buf[1024];
while(1){
bzero(buf,1024);
printf("> ");
fflush(stdout);
fgets(buf,1024,stdin);
if(buf[0]=='.'&&strlen(buf)==2)
break;
printf(“> %s",buf);
}
}
情報ネットワーク
5