Cを使ってメール送信するプログラムを作りたいと考えています。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ファイブマン

Cを使ってメール送信するプログラムを作りたいと考えています。

#1

投稿記事 by ファイブマン » 14年前

こんにちは。いつもここでお世話になっています。
今回、コマンドラインで

プログラム名 差出メールアドレス あて先メールアドレス テキストファイル メールサーバのIPアドレス

を入力することでメールサーバのIPアドレスへ接続して、宛先にテキストファイルの内容を送れるようにするプログラムを作りたいと思っています。
課題で出されたサンプルをもとに改変して、まずサーバに接続することに重点をおくようにし、ここまでやってみました。
最終的にはwriteやreadを使って、サーバからのメッセージを受信したり、送ったりとしたいのですが、今はまず接続を試みたいと思います。
サンプルをもとに書いたため、部分的に完全に理解していない関数を用いた部分もあるのですが、これから先がわかりません。

コード:

int sockaddr_in{
 sin_addr
}
に接続したい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);
}

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: Cを使ってメール送信するプログラムを作りたいと考えています。

#2

投稿記事 by beatle » 14年前

ファイブマン さんが書きました:

コード:

int sockaddr_in{
 sin_addr
}
に接続したいIPアドレスを格納する、というのを使用するようなのですが、自分で調べても、これから先はわかりませんでした。
ここにIPアドレスを入れると・・・
まずはC言語の基礎的な勉強からやり直すべきだと思うのですが.

ファイブマン

Re: Cを使ってメール送信するプログラムを作りたいと考えています。

#3

投稿記事 by ファイブマン » 14年前

それはどういった意味ですか?

確かに、勉強不足であるため、一連の課題が終わったら再び勉強し直す予定です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: Cを使ってメール送信するプログラムを作りたいと考えています。

#4

投稿記事 by softya(ソフト屋) » 14年前

C言語の文法的にありえない定義だからです。

コード:

int sockaddr_in{
 sin_addr
}
この書き方では関数でもないし、構造体でもないし、enumでもないです。

sys/socket.hとあるのでLinuxかUnixだと思うのですが、in.hにsin_addrは
struct in_addr sin_addr;
と定義してあるはずなのですが・・。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
沖 滉均
記事: 237
登録日時: 15年前
住所: K県F市

Re: Cを使ってメール送信するプログラムを作りたいと考えています。

#5

投稿記事 by 沖 滉均 » 14年前

まず、自分でビルドしてみてますか?
There is no royal road to learning.
codeタグで指定できる言語
画像

ファイブマン

Re: Cを使ってメール送信するプログラムを作りたいと考えています。

#6

投稿記事 by ファイブマン » 14年前

ご指摘ありがとうございました.
もう一度出直してきたいと思います.

閉鎖

“C言語何でも質問掲示板” へ戻る