解决方案 »
- MFC现在是否还值得深入研究?用C++做界面除了用MFC还能用其他什么工具?
- 请问如何用mfc来显示obj文件
- 各位老大帮忙!!!,扩展CListCtrl控件!!!
- 难,在线等
- Sock通信程序让wingdows网口死了是怎么回事??
- 怎样将二进制字符串和十六进制字符串相互转换呀??
- 大家好!用USB是不是一定要自己开发驱动?有没有什么封装好的类用。高人应该做一个!谢谢大家!
- 二维Gabor-ESA(能量分离算法)
- MFC中如何获取主窗口客户区DC?
- 我搞不定的问题,熟悉vc,windows消息发送,active控件,对了还有不同操作系统编译设置,unicode和双字节兄弟同志姐们快上呀, 这个问题我已经花了200分了,回答的人到我提供的连接上回答,我一定给分!!!!本问题,又有新发现!!!
- 求文件 gh0st远控源码详讲系列课程 [ 1-10课 ][ 棉猴老师讲解 ]
- 【求助】响应资源管理器的地址栏输入事件
1.
send(sendsocket,(char*)&a,3,0);
send(sendsocket,(char*)&b,3,0);
这两句改成一句:
char sbuff[6];
把a和b的值赋给sbuff;
send(sendsocket,sbuff,6,0);
2.
if(!(recv(sendsocket,recvBuf,8,0)))//改成接收8个字符,因为服务器最多发8个,你却收20个,所以卡住了.
MessageBox(recvBuf);
else
MessageBox("没有接收到信息");
服务器:
if(recvBuf==mima) send(clientsock,"接收正确",strlen("密码正确"),0);
else send(clientsock,"接收错误",strlen("错误"),0);
先运行服务器,点服务器的OK(因为你是在OK按钮里写的侦听程序),再运行客户端
if(recvBuf==mima) send(clientsock,"接收正确",8),0);
else send(clientsock,"接收错误",8,0);
好你是while()这个语句的问题,我把这个语句注释起来就不卡住了,
看服务器程序没发现什么问题,你说的卡是不是退不出来了.你看看这个网址的程序:
http://blog.sina.com.cn/s/blog_7ce34d840100rfjy.html
1.在头文件里定义:
static UINT ReceiveThread(void *param);
CWinThread* m_ThreadPtr;
2.在CPP文件里的初始化函数:
m_ThreadPtr=AfxBeginThread(ReceiveThread,this,THREAD_PRIORITY_HIGHEST);
3.在CPP文件里:
UINT C八嘎Dlg::ReceiveThread(void *param)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
MessageBox("获取版本号失败");
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
MessageBox("缺少库文件");
WSACleanup( );
}
SOCKET listensocket=socket(AF_INET,SOCK_STREAM,0); //定义一个socket
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un .S_addr =inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port =6000;
bind(listensocket,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR)); //绑定本机
listen(listensocket,5);
char recvBuf[20];
char mima[8]={'a','b','c','d','e','f'};
while(1)
{
SOCKET clientsock=accept(clientsock,(sockaddr *)&clientaddr,&len);
recv(clientsock,recvBuf,6,0);
if(recvBuf==mima) send(clientsock,"密码正确",strlen("密码正确"),0);
else send(clientsock,"错误",strlen("错误"),0);
}}
好吧,我拿你的代码去,还是有问题,ReceiveThread' : local function definitions are illegal
{
// 构造
public:
C八嘎Dlg(CWnd* pParent = NULL); // 标准构造函数 static UINT ReceiveThread(void *param);
CRITICAL_SECTION m_Section;
CWinThread* m_ThreadPtr;
.....
}//这是在头文件里定义
//CPP文件:
UINT C八嘎Dlg::ReceiveThread(void *param)
{
C八嘎Dlg *dlg=(C八嘎Dlg*)param;
CListBox *box=(CListBox *)dlg->GetDlgItem(IDC_LIST_INFO);
.....//加上你的代码
}
BOOL C八嘎Dlg::OnInitDialog()
{
CDialogEx/*CDialogEx*/::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。
AfxOleInit();
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
} // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
m_ThreadPtr=AfxBeginThread(ReceiveThread,this,THREAD_PRIORITY_HIGHEST); //启动接受线程
}
这么应该没问题了.
另外,AfxBeginThread是MFC里的,你说的那个CreateThread也对