b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

MFC Socket网络通讯编程

电脑杂谈  发布时间:2019-08-07 09:02:40  来源:网络整理

socket mfc_mfc socket 是否无效_mfc socket onreceive

3、在OnInitDialog()函数中添加:

send_edit = (CEdit *)GetDlgItem(IDC_EDIT1);

4、添加函数update():

void CcFileDlg::update(CString s)

{

m_listwords.AddString(s);

}

5、添加线程函数server_thd():

UINT recv_thd(LPVOID p)

{

int res;

char msg[1024];

//CString s;

cmobiledogdlg* dlg = (cmobiledogdlg*)(::afxgetapp()->m_pmainwnd)。cserverdlg* dlg = (cserverdlg*)afxgetapp()->getmainwnd()。dlg.m_strid,dlg.m_fscore1,dlg.m_fscore2,。

////////////接收数据

while (1)

{

if ((res = recv(sock, msg, 1024, 0)) == -1)//接收服务器的数据

{

dlg->update(_T("失去连接"));

break;

}

else

{

msg[res] = '\0';

dlg->update(_T("server:") + CString(msg));

}

}

socket mfc_mfc socket onreceive_mfc socket 是否无效

//closesocket(sock);

return 0;

}

第四步:为两个按钮添加两个事件,onclogindlgbuttonlogin()和onclogindlgbuttoncancel(),在onclogindlgbuttonlogin()函数中我们添加代码如下:。同一窗口中只能有一个具有默认“属性”的按钮,当有两个以上按钮具有“默认”属性时,只有“停留顺序”属性最小的那个按钮会响应回车事件,当几个按钮的“停留顺序”属性相同时(如,都为0),则最先创建的那个按钮会响应回车事件,其余按钮的“默认”属性将被忽略。在@it168试小客提供的网站下载并安装”超健康app“,打开这个app,注册登录进入服药提醒主页面,在主页面下方有更多的按钮,点击进入更多的页面,在这个页面看到有添加智能药盒的按钮,点击进入到添加新药盒有页面就会自动搜索出memo box 智能药盒,点击药盒名就可以自行蓝牙连接,连接成功会在更多的页面上显示已连接。

void CcFileDlg::OnConnecting()

{

// TODO: Add your control notification handler code here

WSADATA wsaData;

SOCKADDR_IN server_addr;

memset(&server_addr, 0, sizeof(server_addr));

WORD wVersion;

wVersion = MAKEWORD(2, 2);

WSAStartup(wVersion, &wsaData);

// WSAStartup(0x0202, &wsaData);

sock = socket (af_inet,sock_stream,ipproto_tcp)。sock=socket.socket(socket.af_inet,socket.sock_stream)。 socket sock = socket( af_inet, sock_stream, ipproto_tcp)。

{

update(_T("create socket error !!!"));

}

//CString ip;

//ip_edit->GetWindowTextW(ip);//取得服务器的IP地址

inet_aton(ip, &(server_addr.sin_addr))) 。addr.sin_addr.s_addr = inet_addr( ip )。 serv.sin_addr.s_addr= inet_addr(ip) 。

BYTE nArrIP[4];

m_ip.GetAddress(nArrIP[0], nArrIP[1], nArrIP[2], nArrIP[3]);

CString str;

str.Format(_T("%d.%d.%d.%d"), nArrIP[0], nArrIP[1], nArrIP[2], nArrIP[3]);

ip_edit->SetWindowTextW(str);

char cp[50];

CString2Char(str, cp);

mfc socket 是否无效_socket mfc_mfc socket onreceive

server_addr.sin_addr.s_addr = inet_addr(cp);

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(8888);

bind(sock, (SOCKADDR*)&server_addr, sizeof(SOCKADDR));

if(bind(sock,(sockaddr *)&addr_in,sizeof(sockaddr))==socket_error)。if (connect(fdsock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1)。if (connect(fd, (struct sockaddr *)&s_in, sizeof (s_in)) == -1)。

{

update(_T("连接失败"));

}

else

{

//show_edit->SetWindowText(_T(""));

update(_T("连接成功"));

btnconn->EnableWindow(FALSE);//按钮变灰

AfxBeginThread(recv_thd, NULL);

}

}

7、添加发送按钮事件响应函数:在发送按钮上右键选择添加事件响应这一栏,将函数取名OnSending,如下

void CcFileDlg::OnSending()

{

// TODO: Add your control notification handler code here

//CString s;

//char * msg;

//send_edit->GetWindowTextW(s);

//msg = (LPSTR)(LPCTSTR)s;

//CString2Char(s, msg);

CString s;

char msg[1024];

send_edit->GetWindowTextW(s);

mfc socket onreceive_socket mfc_mfc socket 是否无效

CString2Char(s, msg);

if (send(sock, msg, strlen(msg), 0) == SOCKET_ERROR)

{

update(_T("发送失败"));

}

else if (s == "")

{

MessageBox(_T("请输入信息"));

}

else

{

s = msg;

update(_T("client:") + s);//消息上屏,清空输入,并重获焦点

send_edit->SetWindowText(_T(""));

send_edit->SetFocus();

}

/*CString s;

char * msg;

send_edit->GetWindowText(s);

msg = (char*)s.GetBuffer(s.GetLength());

if (send(sock, msg, strlen(msg), 0) == SOCKET_ERROR)

{

show_edit->ReplaceSel(_T("发送失败/r/n"));

}

else if (s == "")

{

MessageBox(_T("请输入信息"));

}

socket mfc_mfc socket 是否无效_mfc socket onreceive

else

{

为了在适当时候恢复输入焦点,cformview覆盖了消息处理函数onsetfocusmfc socket 是否无效,以便在视获得输入焦点时把输入焦点传递给m_hwndfocus(如果非空)。② 清空此功能消息记录:轻点“清空此功能消息记录”后mfc socket 是否无效,弹出“清空此功能消息记录”,轻点此消息框中的“清空”即可。当输入框获得焦点( focus )同时输入框内文字等于设置的提示信息时,就把输入框内清空,如图( chrome ):。

send_edit->SetWindowText(_T(""));

send_edit->SetFocus();

}*/

}

8、最后添加字符格式转换函数

/*

* 函数名: CString2Char

* 参数1: CString str 待转换字符串

* 参数2: char ch[] 转换后将要储存的位置

* 将Unicode下的CString转换为char*

*/

void CString2Char(CString str, char ch[])

{

int i;

char *tmpch;

int i= multibytetowidechar ( cp_utf8 , 0 ,(char*) str ,-1,null,0)。 int size_str = widechartomultibyte(cp_utf8, 0, str, -1, 0, 0, null, null)。 widechartomultibyte(cp_acp, 0, tchar, -1, _char, length, null, null)。

tmpch = new char[wLen + 1]; //分配变量的地址大小

h>// 读取文件到字符数组bool read(const char* file,char* str){if( null == file || null == str){return false。 widechartomultibyte(cp_acp, 0, tchar, -1, _char, length, null, null)。 int size_str = widechartomultibyte(cp_utf8, 0, str, -1, 0, 0, null, null)。

for (i = 0; tmpch[i] != '\0'; i++) ch[i] = tmpch[i];

ch[i] = '\0';

}

实验结果如图:

---------------------

作者:Ezreal_zhanglu


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118363-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...