Từ 1 tới 1 trên tổng số 1 kết quả

Đề tài: - Tạo thread bị lỗi...

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    45

    Question - Tạo thread bị lỗi...

    - Em có 1 đoạn code sau:
    Code:
    // File header001.h
    
    
    #include <windows.h>
    #include <process.h>
    #include <winsock.h>
    #pragma comment(lib,"WS2_32.lib")
    typedef union
    {
    	int ip_num;
    	char ip_char[4];
    }IP;
    
    namespace WINSOCK{
    class NETWORK
    {
    public:
    	NETWORK();
    	~NETWORK();
    public: //Variable...
    	unsigned int listening_status;
    	char *header;
    	unsigned int sizeof_header;
    	char tmpdata[1024];
    private:
    	IP ip;
    	SOCKET s;
    	SOCKET accepted_s;
    	int sizeof_accepted_client;
    
    public: //Function
    	static DWORD StaticListeningFunc(void *param)
    	{
    		((NETWORK*)param)->StartListen();
    		return 1;
    	};
    public: //Function
    	WSADATA w;
    	SOCKADDR_IN sock;
    	SOCKADDR_IN client;
    	bool Init_Winsock();
    	bool StartListeningThread()
    	{
    		DWORD threadID;
    		CreateThread(NULL,0,(::LPTHREAD_START_ROUTINE)StaticListeningFunc,this,0,&threadID);
    		return 1;
    	};
    	bool StartListen();
    	bool CompileHeader();
    	int ReceiveData(char data[]);
    };
    };
    Code:
    //File network.cpp
    
    #include "network.h"
    
    using namespace WINSOCK;
    bool NETWORK::Init_Winsock()
    {
    	unsigned int status = WSAStartup(MAKEWORD(2,2),&w);
    	if(status)
    		return 0;
    	sock.sin_family = AF_INET;
    	sock.sin_port = htons(8080);
    	sock.sin_addr.S_un.S_addr = INADDR_ANY;
    	return 1;
    };
    
    
    bool NETWORK::StartListen()
    {
    	s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    	if(s == INVALID_SOCKET)
    		return 0;
    	bind(s,(SOCKADDR*)&sock,sizeof(sock));
    	listening_status = 1;
    	listen(s,1);
    	sizeof_accepted_client = sizeof(client);
    	accepted_s = accept(s,(SOCKADDR*)&client,&sizeof_accepted_client);
    	ip.ip_num = client.sin_addr.S_un.S_addr;
    	listening_status = 0;
    	ReceiveData(tmpdata);
    	return 1;
    };
    
    bool NETWORK::CompileHeader()
    {
    	return 1;
    };
    
    int NETWORK::ReceiveData(char data[])
    {
    	int sizeof_data;
    	sizeof_data = recv(accepted_s,(char*)data,1,0);
    	return sizeof_data;
    };
    
    NETWORK::NETWORK()
    {
    	ip.ip_num = NULL;
    	listening_status = NULL;
    	accepted_s = NULL;
    	sizeof_accepted_client = NULL;
    };
    NETWORK::~NETWORK()
    {
    	if(s)
    		closesocket(s);
    	if(accepted_s)
    		closesocket(accepted_s);
    };
    Khi chạy em gọi theo trình tự:
    Code:
    WINSOCK::NETWORK net;
    	net.Init_Winsock();
    	net.StartListeningThread();
    - không hiểu sao đoạn code đó em code đầu tiên = cách dùng Form giao diện đồ họa thì VC++ báo 0 error 0 warning nhưng khi chạy thì bị lỗi ngay khi createthread(lỗi mà trình biên dịch ko bắt được luôn, ko debug được), sau đó em tạo thử = Console, copy qua chạy thì ăn ngay, ko 1 chút lỗi.

    => Vậy là bị làm sao ạ?

    Cảm ơn nhiều.
    Thân,
    Attached Thumbnails Attached Thumbnails Cpluc01pro.jpg   CplusSucceed01.jpg  

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

  1. Lập trình C Sử dụng thread và các phương thức đồng bộ trên thread để viết giải quyết bài toán reader/writer dạng tổng quát ?
    Gửi bởi danghoa92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 26-04-2013, 10:23 PM
  2. Cross-thread operation not valid: Control 'txt_1' accessed from a thread other than?
    Gửi bởi ndp1007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 01-03-2012, 12:20 AM
  3. Trả lời: 0
    Bài viết cuối: 16-02-2012, 10:37 PM
  4. lỗi Cross-thread operation not valid khi dùng thread
    Gửi bởi Riku trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 13-04-2011, 02:50 PM
  5. Thread trong Dialog và Thread trog Tabcontrol ???
    Gửi bởi nam_dkn trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 20-03-2009, 10:43 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