ショッピングモール  ポータブルCD  ヘッドホンステレオ  ICレコーダー  アクティブスピーカー


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.3338

コンパイルエラー「server.c:119: error: parse error at end of input」のへ対応
投稿者---chikato(2005/01/25 16:56:52)


下記のリストをWin2kのCygwinでコンパイル試みています。
$ gcc -o server server.c
server.c: In function `session_loop':
server.c:119: error: parse error at end of input

となってしまいます。
session_loop()関数の末尾に「}」が足りないのかと思い、付け足しましたら
$ gcc -o server server.c

/cygdrive/c/DOCUME~1/root/LOCALS~1/Temp/ccDzxJUK.o(.text+0x578):server.c:
undefi
ned reference to `_noecho'
/cygdrive/c/DOCUME~1/root/LOCALS~1/Temp/ccDzxJUK.o(.text+0x75c):server.c:
undefi
ned reference to `_strcyp' collect2: ld returned 1 exit status
とズラズラとエラーが出てしまいました。
どう対処したらコンパイル完了できるのでしょうか?


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/types.h>
#include <curses.h>
#include <signal.h>
#include <unistd.h>
#include<jisaku/jisaku.h>
#define BUF_LEN 20
static int width;
static fd_set mask;
static char buf[BUF_LEN]; /* 送受信兼用バッファ */
static int session_soc; /* socket */
//=======================
int setup_server(in_port_t port){
struct sockaddr_in me; /* 自分のソケットのアドレス */
int soc_waiting; /* 接続待ちのソケット */
int soc; /* 通信に使うソケット */

/* 自分のアドレスを sockaddr_in 構造体に設定 */
memset((char *)&me, 0, sizeof(me));
me.sin_family = AF_INET;
me.sin_addr.s_addr = htonl(INADDR_ANY);
me.sin_port = htons(port);

/* IPv4 でストリーム型のソケットの作成 */
if ((soc_waiting = socket(AF_INET,SOCK_STREAM,0)) < 0 ){
perror("socket");
return -1;
}

/* ソケットに自分のアドレスを設定 */
if (bind(soc_waiting,(struct sockaddr *)&me,sizeof(me)) == -1){
perror("bind");
return -1;
}

/* ソケットで接続待ちの設定 */
listen(soc_waiting,1);
fprintf(stderr,"successfully bound, now waiting.\n");

/* 接続要求があるまでブロック */
soc = accept(soc_waiting, NULL, NULL);

/* 接続待ちに使ったソケットを閉じる */
close(soc_waiting);

/* 通信に使うソケットのディスクリプタを返す */
return soc;
}
//======================
static void die(){exit(0);}
//======================
void session_init(int soc){
int session_soc=soc;
width=soc+1;
FD_ZERO(&mask);
FD_SET(0,&mask);
signal(SIGINT,die);
}
//=====================
int update(char c){
switch(c){
case 'k':
strcpy(buf,"uee");break;
case('j'):
strcyp(buf,"shitae");break;
case('q'):
strcpy(buf,"yameru");break;
default:
strcpy(buf,"invalid");break;
}
return 1;
}
//====================
void session_loop(){
fd_set readOK;
int flag=1;
char c;
while(1){
printf("あ");
readOK=mask;
select(width,(fd_set *)&readOK,NULL,NULL,NULL);
c=getchar();
flag=update(c);
write(session_soc,buf,BUF_LEN);
if(flag==0)break;
if(FD_ISSET(session_soc,&readOK)){
printf("い");
read(session_soc,buf,BUF_LEN);
printf("buf=%s",buf);
if(strcmp(buf,"yameru")==0)break;
}
}
//=================
int main(void){
int soc; /* ソケットのディスクリプタ */

char port0[12];
in_port_t port;
printf("Input port number:");
fgets(port0,sizeof(port0),stdin);
port=atoi(port0);
printf("port=%u",port); // in_port_t型はunit16_t型

/* 接続受付まで */
if( (soc = setup_server(port) ) == -1)exit(1);

/* セッションモジュールの初期化 */
session_init(soc);

/* セッションのループ */
session_loop();
return 0;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:コンパイルエラー「server.c:119: error: parse error at end of input」のへ対応 3339 BB 2005/01/25 17:15:11
<子記事> Re:コンパイルエラー「server.c:119: error: parse error at end of input」のへ対応 3340 もぐりん 2005/01/25 17:15:20


No.3339

Re:コンパイルエラー「server.c:119: error: parse error at end of input」のへ対応
投稿者---BB(2005/01/25 17:15:11)


まず気づいてる通りに、session_loop関数が閉じられてません。
あと71行目の恐らくstrcpyであろうものがstrcypになっています。

私が気づけたのはそれぐらいでした


この投稿にコメントする

削除パスワード

No.3340

Re:コンパイルエラー「server.c:119: error: parse error at end of input」のへ対応
投稿者---もぐりん(2005/01/25 17:15:20)


【掲示板ご利用上の注意】は読んでいますか?
読んでいれば、
「※ソースの添付は「HTML変換ツール」で字下げ!」は理解していますよね?
また、自作のヘッダーを提示しないと検証してもらえないのでは?



この投稿にコメントする

削除パスワード

No.3349

(解決)Re:コンパイルエラー「server.c:119: error: parse error at end of input」のへ対応
投稿者---chikato(2005/01/25 21:03:13)


> まず気づいてる通りに、session_loop関数が閉じられてません。
> あと71行目の恐らくstrcpyであろうものがstrcypになっています。
有難うございます。上手く行きました。

> 【掲示板ご利用上の注意】は読んでいますか?
はい。

> 読んでいれば、
> 「※ソースの添付は「HTML変換ツール」で字下げ!」は理解していますよね?
スイマセン。意味がよく分かっていませんでした。失礼致しました。

> また、自作のヘッダーを提示しないと検証してもらえないのでは?
スイマセン。自作ヘッダはまだ何も記述してませんので、無視されて結構でした。
説明不足で誠に失礼致しました。m(_ _)m


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity