- 960 名前:shinnichi [2007/12/05(水) 11:18:58 ]
- winsockで1対多のチャットプログラムを作ろうとしているのですが、上手くいかず困っています。
とりあえず以下のプログラムを作成して実験してみたのですが、 struct sockaddr_in addr1,addr2; struct sockaddr_in client1,client2; int len; SOCKET sock1,sock2; // 1 sock1 = socket( AF_INET , SOCK_STREAM , 0 ); addr1.sin_family = AF_INET; addr1.sin_port = htons( 12345 ); addr1.sin_addr.S_un.S_addr = INADDR_ANY; bind( sock1 , ( struct sockaddr * )&addr1 , sizeof( addr1 ) ); listen( sock1 , 1 ); len = sizeof( client1 ); sock1 = accept( sock1 , ( struct sockaddr * )&client1 , &len ); // 2 sock2 = socket( AF_INET , SOCK_STREAM , 0 ); addr2.sin_family = AF_INET; addr2.sin_port = htons( 12345 ); addr2.sin_addr.S_un.S_addr = INADDR_ANY; bind( sock2 , ( struct sockaddr * )&addr2 , sizeof( addr2 ) ); listen( sock2 , 1 ); len = sizeof( client2 ); sock2 = accept( sock2 , ( struct sockaddr * )&client2 , &len ); // 1 のときにはacceptで待機し、クライアントからコネクションすると接続され // 2 が実行されるのですが、// 2のacceptでは待機してくれません(クライアントからコネクションしなくても流れていってしまう)。 理由が分からず困っています。 どなたか解る人がいましたらご教授願います。
|

|