SOCKET 的定义
// examDlg.h : header file
//
#if !defined(AFX_EXAMDLG_H__DCC76736_D760_498D_89AD_D03491220AFB__INCLUDED_)
#define AFX_EXAMDLG_H__DCC76736_D760_498D_89AD_D03491220AFB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <winsock2.h>
/////////////////////////////////////////////////////////////////////////////
// CExamDlg dialog
class CExamDlg : public CDialog
{
// Construction
public:
CExamDlg(CWnd* pParent = NULL); // standard constructor
WSADATA wsaData;
SOCKET clientsocket;
SOCKET broadsocket;
struct sockaddr_in sa;
BOOL IsTrue;
CData msg;
struct SENDDATA
{
char data1[1000];
char data2[1000];
} senddata;
// Dialog Data
//{{AFX_DATA(CExamDlg)
enum { IDD = IDD_EXAM_DIALOG };
CIPAddressCtrl m_groupip;
CIPAddressCtrl m_hostip;
CListBox m_MSGS;
CString m_MSG;
CString m_MSG2;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CExamDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
LRESULT OnReadClose (WPARAM wParam,LPARAM lParam);
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CExamDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnSend();
afx_msg void OnConnect();
afx_msg void OnAdd();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_EXAMDLG_H__DCC76736_D760_498D_89AD_D03491220AFB__INCLUDED_)
上面那些是我在一程序里的头文件,开始时我只定义了一个SOCKET clientsocket;
使用TCP,程序都没问题。
后来我想在程序里实现多播与TCP的选择,就在头文件里加上
SOCKET broadcastsocket; 程序编译时通过,但有;运行是出现下面问题:
---------------------------
exam.exe - 应用程序错误
---------------------------
"0x00401547" 指令引用的 "0x066b053d" 内存。该内存不能为 "written"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定 取消
---------------------------
是不是说在一个头文件了不能定义两个SOCKET,我以前在头文件里定义两个 SOCKET 对象也不行,希望高手能给一个解答,
在此先谢了。