c言語のaccept関数が待機を行いません
c言語のaccept関数が待機を行いません
現在C言語によるプログラミングを勉強中で、
「Windows ゲームプログラミング」という書籍を教材に
ネットワーク通信のプログラミングを行っております。
ネットワーク通信のプログラミングは初めてで
現在一つの壁にぶつかっております。
どうか護教授をお願い致します。
下記のサーバー側のコードですが、
(1)ソケットを作成して、bind関数でアドレスと関連付ける
(2)listen関数で接続を準備する
(3)accept関数でクライアントが接続するまで待機する
(4)while文の中でクライアントからのメッセージを受け取る
という目的で作成いたしましたが、クライアントからの接続はしていないはずなんですが、
どうもaccept関数で待機を行わず、while文に進んでしまい、無限ループに突入してしまいます。
accept関数の戻り値を確認すると「INVALID_SOCKET」でした。
現在はこのサーバーに接続するシステムは作成していないので接続はないと思います。
ポート番号などを変更してもダメでした。
お恥ずかしい質問かもしれませんが、どうかよろしくお願い致します。
以下コード
WSADATA wsaData;
sturuct sockaddr_in hostAddr,clAddr;
SOCKET s,client;
char buffer[1024];
int length;
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
return;
(1)
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
hostAddr.sin_family=AF_INET;
hostAddr.sin_port=ポート番号;
hostAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
bind(s,&hostAddr,sizeof(struct sockaddr_in));
(2)
listen(s,1);
printf("クライアントからの接続を待機...\n");
(3)
client=accept(s,&clAddr,&length);
printf("クライアントからの接続を確認\n受信を待機...\n");
(4)
while(1){
length=recv(client,buffer,1024,0);
buffer[length]=0;
printf("文字列を受信:%s\n",buffer);
if(strcmp(buffer,"exit")==0)
break;
}
shutdown(client,SD_BOTH);
closesocket(client);
closesocket(s);
WSACleanup();
return 0;