socket编程 服务器端一运行就关闭,怎么解决?
我用vc编一个socket通信的服务器端 但是 点击 连接按钮之后 对话框就关了 这是为什么呢 ?
下面是按钮的代码
#define THUMWIDTH 150#define THUMHEIGHT 150void CListImage::OnButton4() {struct sockaddr_in server; struct sockaddr_in client; char buf[MAX_LEN] = "\0"; int listensd,connectsd; FILE *fp; int opt = 1; if( ( listensd = socket(AF_INET,SOCK_STREAM,0) ) == -1 ){ perror("socket"); exit(1); } setsockopt(listensd,SOL_SOCKET,SO_REUSEADDR,( const char* )&opt,sizeof(opt)); memset(&server,0,sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(SER_PORT); server.sin_addr.s_addr = htonl(INADDR_ANY); if( bind(listensd,(struct sockaddr *)&server,sizeof(server)) < 0) { perror("Bind"); closesocket(listensd); exit(1); } if( listen(listensd,5) == -1 ){ perror("listen"); closesocket(listensd); exit(1); } if( ( fp = fopen("new3.png","ab") ) == NULL ){ perror("File"); closesocket(listensd); exit(1); } while( 1 ) { int rn ; int sin_len = sizeof(client); if( (connectsd = accept(listensd,(struct sockaddr *)&client,&sin_len)) < 0 ) { perror("accept"); continue; } while( 1 ) { rn =read(connectsd,buf,MAX_LEN); if(rn == 0) break; fwrite(buf,1,rn,fp); } closesocket(connectsd); fclose(fp); } closesocket(listensd); // TODO: Add your control notification handler code here }