ここから本文です

#include <stdio.h> /* printf()、fprintf()に必要 */

kax********さん

2019/7/1711:55:48

#include <stdio.h> /* printf()、fprintf()に必要 */

#include <sys/socket.h> /* socket()、bind()、connect()に必要 */
#include <arpa/inet.h> /* sockaddr_in、inet_ntoa()に必要 */
#include <stdlib.h> /* atoi()に必要 */
#include <string.h> /* memset()に必要 */
#include <unistd.h> /* close()に必要 */
#include <fcntl.h>
#define MAXPENDING 5
#define RCVBUFSIZE 32

void DieWithError(char *errorMessage); /* エラー処理関数 */
void HandleTCPClient(int clntSocket); /* TCPクライアント処理関数 */

int main(int argc, char *argv[])
{
char echoBuffer[RCVBUFSIZE];
char sendBuffer[RCVBUFSIZE];
char *echosend;
int recvsize;
int servSock; /* サーバのソケットディスクリプタ */
int clntSock; /* クライアントのソケットディスクリプタ */
struct sockaddr_in echoServAddr; /* ローカルアドレス */
struct sockaddr_in echoClntAddr; /* クライアントアドレス */
unsigned short echoServPort; /* サーバポート */
unsigned int clntLen; /* クライアントのアドレス構造体の長さ */



if (argc != 2) /* 引数の数が正しいか確認 */
{
fprintf(stderr, "Usage: %s <Server Port>\n", argv[0]);
exit(1);
}

echoServPort = atoi(argv[1]); /* 1つ目の引数:ローカルポート */

/* 着信接続用のソケットを作成 */
if ((servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
DieWithError("socket() failed");

/* ローカルのアドレス構造体を作成 */
memset(&echoServAddr, 0, sizeof(echoServAddr)); /* 構造体をゼロで埋める */
echoServAddr.sin_family = AF_INET; /* インターネットアドレスファミリ */
echoServAddr.sin_addr.s_addr = htonl(INADDR_ANY); /* ワイルドカードを使用     */
echoServAddr.sin_port = htons(echoServPort); /* ローカルポート */

/* ローカルアドレスへバインド */
if (bind(servSock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0)
DieWithError("bind() failed");

/* 着信接続要求のリスン状態というマークをソケットに付ける */
if (listen(servSock, MAXPENDING) < 0)
DieWithError("listen() failed");

for (;;) /* 永遠に実行 */
{
/* 入出力パラメータのサイズをセット */
clntLen = sizeof(echoClntAddr);

/* クライアントからの接続要求を待機 */
if ((clntSock = accept(servSock, (struct sockaddr *) &echoClntAddr,
&clntLen)) < 0)
DieWithError("accept() failed");

/*int s,deposits,withdrawals;

send(s,&deposits,sizeof(deposits),0);
send(s,&withdrawals,sizeof(withdrawals),0);*/
/* clntSockはクライアントに接続済み */

printf("Handling client %s\n", inet_ntoa(echoClntAddr.sin_addr));

HandleTCPClient(clntSock);

}
/* この部分には到達しない */
}


を実行するとDieWithErrorに対する定義されていない参照ですとでるのですがなぜですか?
解決方法を教えて欲しいです。

閲覧数:
36
回答数:
1

違反報告

ベストアンサーに選ばれた回答

fan********さん

2019/7/2400:41:48

>DieWithErrorに対する定義されていない参照ですとでるのですがなぜですか?

DieWithError関数がどういう処理をするのか、どこにも書かれていないからです。

void DieWithError(char *errorMessage);


void DieWithError(char *errorMessage)
{
DieWithErrorが行う処理
}

に書き換えて下さい。

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる