今回、コマンドラインで
プログラム名 差出メールアドレス あて先メールアドレス テキストファイル メールサーバのIPアドレス
を入力することでメールサーバのIPアドレスへ接続して、宛先にテキストファイルの内容を送れるようにするプログラムを作りたいと思っています。
課題で出されたサンプルをもとに改変して、まずサーバに接続することに重点をおくようにし、ここまでやってみました。
最終的にはwriteやreadを使って、サーバからのメッセージを受信したり、送ったりとしたいのですが、今はまず接続を試みたいと思います。
サンプルをもとに書いたため、部分的に完全に理解していない関数を用いた部分もあるのですが、これから先がわかりません。 に接続したいIPアドレスを格納する、というのを使用するようなのですが、自分で調べても、これから先はわかりませんでした。
この後何に着手すればよいのでしょうか。回答よろしくお願いします。
include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include<netinet/in.h>
#include <string.h>
#include <netdb.h>
#define SERVER_NAME "zenith.edu.ics.saitama-u.ac.jp"
#define ERR -1
#define BUFSIZE 1024
void usage(void);
char *command_name;
int socket(int domain, int type, int protocol);
int main(int argc, int argv[]){
int sds;
int write;
int read;
struct sockaddr_in server;
struct hostent *hp;
char buf[BUFSIZE];
char servername = SERVER_NAME;
if ((command_name = rindex(argv[0], '/')) != NULL)
command_name++;
else
command_name = argv[0];
if(argc != 1)
usage();
if((sds = socket(PF_INET, SOCK_STREAM, 0)) == ERR){
perror("client: socket");
exit(1);
}
memset((void*)&server, 0, sizeof(server));
server.sin_family = PF_INET;
server.sin_port = htons(25);
if ((hp = gethostbyname(servername)) == NULL){
perror("client : gethostbyname");
exit(1);
}
memcpy(&(server.sin_addr), hp->h_addr_list[0], hp->h_length);
return 0;
}
void usage(void)
{
\\ fprintf(stderr, "Usage: %s \n", command_name);
\\まだここは見搾取です。
exit(1);
}