[解決済み] ソケットプログラミングのconnect()が2回目にループを実行したときに失敗する
2022-02-04 21:54:36
質問内容
サーバー側とクライアント側をforループで動作させようとしています。最初に実行したときはうまくいくのですが、2回目に実行したときは接続に失敗するか、accept()のところで止まってしまいます。以下は私のコードです。
クライアントのコード
for(i=0;i<2;i++)
{
if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
printf("\nError : Connect Failed\n");
return 1;
}
//***************Writing_I***************
memset(recvBuff, '0',sizeof(recvBuff));
ticks = time(NULL);
snprintf(recvBuff, sizeof(recvBuff), "%.24s\r\n", ctime(&ticks));
if((n = send(sockfd, recvBuff, strlen(recvBuff), 0))<0)
{
printf("Error : send operation failed\n");
}
//***************Reading_I***************
memset(recvBuff, '0', sizeof(recvBuff));
n= recv(sockfd, recvBuff, sizeof(recvBuff)-1, 0);
{
printf("bytes read: %d\n", n);
recvBuff[n] = '\0';
printf("Data: %s\n",recvBuff);
}
if(n < 0)
{
printf("\n Read error \n");
}
}
close(sockfd);
サーバーのコードです。
if((connfd = accept(listenfd, (struct sockaddr*)NULL, NULL))>=0)
{
for(i=0;i<2;i++)
{
fd= open("/home/t/Desktop/CS II/A4/test.txt", O_RDONLY);
//***************Reading***************
memset(sendBuff, '0', sizeof(sendBuff));
count = recv(connfd, sendBuff, sizeof(sendBuff)-1, 0);
{
printf("bytes read: %d\n", count);
sendBuff[count] = '\0';
printf("Data: %s\n",sendBuff);
}
if(count < 0)
{
printf("Read error \n");
}
//***************Writing***************
ticks = time(NULL);
memset(sendBuff, '0', sizeof(sendBuff));
printf("Reading from file\n");
if((noOfBytesRd= read(fd, sendBuff, sizeof(sendBuff)-1))<0)
printf("\n Error : read operation failed\n");
sendBuff[noOfBytesRd]='\0';
if((count = send(connfd, sendBuff, strlen(sendBuff), 0))<0)
printf("\n Error : wtite operation failed\n");
}
close(connfd);
}
解決方法は?
ソケットは
connect
のライフサイクルの中で一度だけ作られます。接続するたびに別のソケットを作成し、接続が終了したら閉じる必要があります。
関連
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み】MPI通信でMPI_Bcastを使用する場合
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み】ソケット '/var/lib/mysql/mysql.sock' を介してローカルの MySQL サーバーに接続できない (2)。
-
[解決済み】ソケットプログラミングにおけるAF_INETとPF_INETの違いは何ですか?
-
[解決済み] ソケット connect() と bind() の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】malloc():メモリ破壊
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。