今回は「DATE」という文字を送ると日付が返ってくるような
サーバクライアントのシステムを作成しようと考えているのですが、
C言語の知識がまだ浅いため、うまくコードを作ることができません。
まずサーバ側のコードを作ってみたのですが、コンパイルすらうまくいきません。
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <time.h>
#include <string.h>
int main(int argc, char *argv[]){
int srcSocket;
int newsid;
struct sockaddr_in srcAddr;
char buf[1024];
srcAddr.sin_family = AF_INET;
srcAddr.sin_port=htons(atoi(argv[1]));
srcAddr.sin_addr.s_addr = INADDR_ANY;
srcSocket = socket(AF_INET, SOCK_STREAM, 0);
bind(srcSocket, (struct sockaddr *)&srcAddr, sizeof(srcAddr));
listen(srcSocket, 1);
while(1){
readline(newsid, buf, 1);
if (strncmp(buf, "DATE", 4) == 0) {
time_t t = time(NULL);
sprintf(buf, "現在の時刻は%s です¥r¥n", ctime(&t));
response(newsid, buf);
} else if (strncmp(buf, "QUIT", 4) == 0) {
response(newsid, "+OK¥r¥n");break;
} else {
response(newsid, "-NGNo such command¥r¥n");
}
}
return(0);
}
fins.c: In function ‘main’:
fins.c:26:7: warning: implicit declaration of function ‘readline’ [-Wimplicit-function-declaration]
26 | readline(newsid, buf, 1);
| ^~~~~~~~
fins.c:30:8: warning: implicit declaration of function ‘response’ [-Wimplicit-function-declaration]
30 | response(newsid, buf);
| ^~~~~~~~
/usr/bin/ld: /tmp/ccwhX99N.o: in function `main':
fins.c:(.text+0xca): undefined reference to `readline'
/usr/bin/ld: fins.c:(.text+0x143): undefined reference to `response'
/usr/bin/ld: fins.c:(.text+0x180): undefined reference to `response'
/usr/bin/ld: fins.c:(.text+0x1b0): undefined reference to `response'
collect2: error: ld returned 1 exit status
この後クライアント側のコードも作成して成功するか試したいのですが、
コードがうまく作れないので教えていただけると幸いです。
よろしくお願いします。