SOCKET 的定义

c4313848 2003-10-15 10:49:48
// 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 对象也不行,希望高手能给一个解答,
在此先谢了。
...全文
114 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
c4313848 2003-10-18
  • 打赏
  • 举报
回复
sevencat(七猫) 我刚开始学WINSOCK ,我看了你在CSDN的网络这版一些帖子,感觉自己的水平有进,希望以后能得到你更多的指点。
studyingpersons 2003-10-17
  • 打赏
  • 举报
回复
主要是因为盗版的VC有很多问题,有时候在类视图中刚刚定义的类自己会突然消失!!
建议大家使用比较可靠的盗版。
c4313848 2003-10-17
  • 打赏
  • 举报
回复
我那段程序放了几天没有改,今天准备按各位老兄说的调试时,还没改运行一下竟然可以了,
搞的我莫名其妙,是不是VC都这么变态。
sevencat 2003-10-17
  • 打赏
  • 举报
回复
不是盗版的问题,

盗版给了我们很多方便了。


你程序再仔细看看吧。
bbyf 2003-10-16
  • 打赏
  • 举报
回复
在VC的“编译”菜单中有一项“清洁”选项,你先执行这个选项,然后再编译一次,然后再执行看看。
quanch 2003-10-16
  • 打赏
  • 举报
回复
看来还是你程序其他地方的错,定义不会有错的,只是定义使得你原来隐藏的错暴露出来了。你自己仔细调试一下吧!情况不清我们也帮不上什么忙。
quanch 2003-10-16
  • 打赏
  • 举报
回复
SOCKET的定义就是一句柄,你要是没有调用它是不该出错的,你还是检查调用它的地方有什么不对的吧。
c4313848 2003-10-16
  • 打赏
  • 举报
回复
楼上的,请你说清楚点,你的话我看不太明白。
mfc168 2003-10-16
  • 打赏
  • 举报
回复
问题不在这里,其他地方
你 取消,然后跟踪一下程序,看问题出在哪里?
c4313848 2003-10-16
  • 打赏
  • 举报
回复
有时候在一个好的程序里,再加上一个SOCKET的定义(程序里已经有一个SOCKET定义),程序运行没有错,但运行完后,程序的对话框界面出不来。
c4313848 2003-10-15
  • 打赏
  • 举报
回复
使用了,我装的是SP4,这个跟系统补丁有关系吗?
quanch 2003-10-15
  • 打赏
  • 举报
回复
如果你只是定义了还没有使用就出错,我看可能是VC的问题了,不知你装了sp5了没有?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧