Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Cách sử dụng hàm API CreateThread ?

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    5

    Mặc định Cách sử dụng hàm API CreateThread ?

    Mình đang làm project về 1 game nhỏ nhưng tới chổ tạo tiểu trình và winsock thì bị vướng.
    cụ thể hàm này:[
    C++ Code:
    1. thread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Langngheketnoi(&sock,&My_Addr),NULL,0,&dwGenericThread);
    chạy ( tạo kết nối ) nhưng nó làm cho cửa sổ mình mất luôn!
    Mình chỉ mới tìm hiểu phần này, nên cũng chưa rõ cách tạo tiểu trình.
    Xin các bạn chỉ giúp. thân..
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 01-04-2009 lúc 11:47 PM.

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn phải đem code lên chứ trích ngang thế này thì bó tay. Trong hàm LangNgheKetNoi bạn làm những gì ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    :( Mình nghĩ là bạn nên chạy debug, tới dòng lệnh nào mà " cửa sổ mất luôn " thì đem đoạn đó lên.

    Viết thế này hơi khó.

  4. #4
    Ngày gia nhập
    04 2009
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Bạn phải đem code lên chứ trích ngang thế này thì bó tay. Trong hàm LangNgheKetNoi bạn làm những gì ?
    Code of mình đây:
    Code:
    int Langngheketnoi(SOCKET* sock,sockaddr_in* pAddr)
    {
    	int nResult;
    		
    	pAddr->sin_family = AF_INET;
    	pAddr->sin_port = htons(MY_PORT);
    	pAddr->sin_addr.S_un.S_addr = ADDR_ANY;
    	
    	
    	
    	char lpName[100];
    	char lpMyIP[100]={0};
    
    	gethostname(lpName,sizeof(lpName));
    	hostent* pMyServer = gethostbyname(lpName);
    	u_long myIP = *(u_long*)pMyServer->h_addr_list[0];
    	strcpy(lpMyIP,inet_ntoa(*(in_addr*)&myIP));
    
    	nResult = bind(*sock,(sockaddr*)pAddr,sizeof(sockaddr));
    
    	if (nResult == -1)
    	{
    
    		HuyWinsock(sock);
    		return 1;
    	}
    
    	int nAddrLen;
    	int nRevc;
    	int nSend;
    	sockaddr_in IPClient;
    	char str[255];
    	wchar_t* lpfile;
    	lpfile = (wchar_t *)malloc( sizeof( wchar_t ));
    	
    	char buff[512]={0};	
    
    	while (1)
    	{
    		
    			nAddrLen = sizeof(sockaddr_in);
    			nRevc = recvfrom(*sock,buff,sizeof(buff),0,(sockaddr*)&IPClient,&nAddrLen);
    
    			if(buff[0]=='3')
    			{
    				buff[nRevc-1] = 0;
    
    				sprintf( str,"%s", buff); 
    				mbstowcs(lpfile,str,255);
    				MessageBox (NULL, lpfile ,szTitle, MB_ICONERROR) ;
    
    			}
    	
    		}
    
    	return 0;
    }

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nếu bạn ko phiền thì hãy up toàn bộ project lênh đi, nhìn vầy mình cũng chưa tìm ra lỗi gì.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  6. #6
    Ngày gia nhập
    04 2009
    Bài viết
    5

    Smile Cách sử dụng hàm API CreateThread ?

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Nếu bạn ko phiền thì hãy up toàn bộ project lênh đi, nhìn vầy mình cũng chưa tìm ra lỗi gì.
    Thanks bạn, project mình đây, giúp nhé:
    http://www.mediafire.com/?zntyjzz2zwy
    hay
    http://www.4shared.com/file/96405891...427/test2.html
    Đã được chỉnh sửa lần cuối bởi riokenta : 03-04-2009 lúc 01:01 AM.

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    link này lỗi rồi hay sao ấy, mình down ko được.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    09 2007
    Bài viết
    724

    ơ mình down được mà mèo

    up lại giùm bạn kia

    để test nốt
    Attached Files Attached Files

  9. #9
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Thôi thì lỡ rồi chỉ ra cho bạn luôn



    Visual C++ Code:
    1. while (1)
    2.     {
    3.        
    4.             nAddrLen = sizeof(sockaddr_in);
    5.             nRevc = recvfrom(*sock,buff,sizeof(buff),0, (sockaddr*)&IPClient,&nAddrLen);
    6.             if(buff[0]=='3')
    7.             {
    8.                 buff[nRevc-1] = 0;
    9.                 sprintf( str,"%s", buff);
    10.                 mbstowcs(lpfile,str,255);
    11.                 MessageBox (NULL, lpfile ,szTitle, MB_ICONERROR) ;
    12.             }
    13.         }

    ở trên là vòng lặp của bạn là vòng lặp chết.
    bạn lại để nó ở trong sự kiện create nữa nên nó ... chết ở trong đó .

  10. #10
    Ngày gia nhập
    04 2009
    Bài viết
    5

    Vậy mình làm sao cho nó ko chết mà lúc nào cũng lắng nghe đc?
    mình cũng chưa hiểu lắm! chết là mất cửa sổ sao?
    Đã được chỉnh sửa lần cuối bởi riokenta : 03-04-2009 lúc 02:02 AM.

Các đề tài tương tự

  1. Sử dụng hàm createthread trong VC++ như thế nào?
    Gửi bởi again67 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 09-04-2013, 09:27 PM
  2. Hàm trong C lỗi ko chạy hàm CreateThread trong lập trình C trên windows
    Gửi bởi vandt trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 24-09-2012, 05:01 PM
  3. Hàm nào công dụng tương tự CreateThread ?
    Gửi bởi hsagduag trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 08-12-2011, 06:41 PM
  4. Hỏi: Hỏi về hàm CreateThread()
    Gửi bởi quangnh89 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 05-07-2009, 08:26 AM
  5. Trong C/C++ có hàm CreateThread() không nhỉ?
    Gửi bởi PoPoPoPo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 13-11-2006, 09:02 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn