前回のクライアント側のプログラムが違ったため
再度どこが違うか教えてください。
最終的にはクライアント側のipアドレス部を変更して2つのPCで通信させたいと思っています。
以下エラー分
1
./server.c: 行 12: 予期しないトークン `(' 周辺に構文エラーがあります
2
./client.c: 行 9: 予期しないトークン `(' 周辺に構文エラーがあります
どちらもmain前に出ています。
1サーバー
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define PORT 3000
int main()
{
int fd_socket, fd_accept;
socklen_t len;
struct sockaddr_in addr;
char buff[BUFSIZ];
if ((fd_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("server: socket");
return 1;
}
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(PORT);
if (bind(fd_socket, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
perror("server:bind");
return 1;
}
if(listen(fd_socket, 5) == -1) {
perror("server:listen");
return 1;
}
if((fd_accept = accept (fd_socket,
(struct sockaddr *)&addr, &len)) == -1) {
perror("server: accept");
return 1;
}
if (read(fd_accept, buff, BUFSIZ) == -1) {
perror("server:read");
return 1;
}
strcat(buff, "is received message.");
if (write(fd_accept, buff, strlen(buff) + 1) == -1) {
perror("server:write");
return 1;
}
close(fd_accept);
close(fd_socket);
return 0;
}
2クライアント文
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#define PORT 3000
int main(int argc, char *argv[]){
int fd_socket;
struct sockaddr_in addr;
char buff[BUFSIZ];
if ((fd_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("client: socket");
return 1;
}
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(PORT);
if(connect(fd_socket, (struct sockaddr *)&addr, sizeof(addr)) == -1){
perror("client: connect");
return 1;
}
if(write(fd_socket, argv[1] , strlen(argv[1]) + 1) ==-1){
perror("client: write");
return 1;
}
if(read(fd_socket, buff, BUFSIZ) == -1){
perror("client: read");
return 1;
}
printf("message from server: %s\n", buff);
close(fd_socket);
return 0;
}
No.2
- 回答日時:
どのような環境で、どのようにコンパイルされたのでしょうか。
例: linux環境でソース(server.c,client.c)のあるディレクトリに移動し、
gcc ./client.c と入力した。
のような補足を期待しています。
No.1
- 回答日時:
上記のソースをコピペして、コンパイルしましたが、2つとも正常終了しています。
あなたがなにか、ほかのソースをコンパイルしているようにも見えます。
コンパイルしたのは、
./server.c
./client.c
で間違いないですか。
アップされたソースも、上記で間違いないですか。
エラーメッセージが、前回の投稿
https://oshiete.goo.ne.jp/qa/12796887.html
と全く同じです。今回、ソースが変わったように見えません。
./client.cはソースを比較すると前回と違っていますが、同じ行で同じ内容のエラーメッセージがでています。
再度ご回答ありがとうございます。
./server.cと./client.cをコンパイルしました。
変更があるのはclient.cのみです。
実行しても同じエラーが出ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- C言語・C++・C# c言語 文字化けします 2 2021/12/08 16:35
- C言語・C++・C# 論理演算子を判定するプログラム c言語で 3 2021/12/08 17:38
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# #include <stdio.h> #include <stdlib.h> #include <s 2 2021/12/05 16:11
- C言語・C++・C# 関数へのポインタ 3 2022/02/04 17:20
- C言語・C++・C# 音声データを出力するCプログラミング 1 2021/11/23 20:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
enumの値から定義名を文字列化...
-
なぜ、C++の標準ヘッダをインク...
-
空ENTERの判別
-
指定した文字を削除したい
-
#defineの使い方について
-
snprintfが使用できない。
-
wstringの主力
-
std::map の const 修飾について
-
#define中の#のエスケープ
-
c++のvirtual関数および継承に...
-
C++ 数値データファイルから2次...
-
C++で、環境変数の読み込み方を...
-
構文エラーが出ているのですが...
-
c++ ファイルからの複素数の読...
-
string型のフォーマット書式指...
-
gccでコンパイル時のエラー
-
C++文字配列ソート関数を教えて...
-
C言語のエラーを修正したい
-
iostream インクルード時に発生...
-
_tcscat がうまくいきません(V...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
空ENTERの判別
-
C++でShowCursorを使いたい。
-
なぜ、C++の標準ヘッダをインク...
-
#define中の#のエスケープ
-
C++で、テキストファイルを一行...
-
gccでコンパイル時のエラー
-
C言語のエラーを修正したい
-
#include "fstream.h"
-
C言語のポインターで詰まっている
-
リモートデスクトップの接続元I...
-
構造体配列のvectorへの変換と...
-
JPEGやPNGが読めるLoadImage関数
-
VS2019でofstreamが未定義になる
-
構造体に決められた文字列を入...
-
VHDLのsignedとunsignedの違いは?
-
std::wstringのメモリリークに...
おすすめ情報
linux環境で
ディレクトリを移動し
gcc ./server.c
gcc ./client.c
と動かしました。
上記コンパイルはうまくいきました。
次に
./server.c &
./client.c Hello
と実行すると上記のエラーが出てきます。