void main() {
for(i = 1; i <= 500; i++) {
threadnum++;
while(threadnum == MAXTHREAD) {      //MAXTHREAD == 10
Sleep(10);
}

CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)scanport,(void*)&i, 0, &threadid);
threadid++;
Sleep(100);

}
void scanport(void* portnum) {
SOCKET mysocket = INVALID_SOCKET;
SOCKADDR_IN socket_sin;

socket_sin.sin_family = AF_INET;
socket_sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
socket_sin.sin_port = htons(*((int *)portnum)); if((mysocket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
printf("error occur when socket");
exit(0);
}

if(!connect(mysocket, (PSOCKADDR)&socket_sin, sizeof(socket_sin))) {
closesocket(mysocket);
    printf("the port %d is open\n", *((int *)portnum));
}
else {
printf("the port %d is closed\n", *((int *)portnum));

threadnum--;
ExitThread(0);

}
在线程中,我通过connect去判断端口是否开放,并打印出信息
每开一个线程,都会打印出一句信息的
打印出的结果是the port 9 is close
the port 9 is clode
...
///////////////
我感到很奇怪
1。我开了10 个线程,但显示时前面的1-8个线程的信息都显示不了。
2。而且有好几个线程,他们的现实相同的信息。好像前面的for循环中
   一个i值,付给了好几个线程一样,
我不知道是不是我的程序写的有问题,请高手帮忙
指点一下,
线程的程序编写上应该注意哪些问题呢?
先谢谢大家了