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

MFC局域网的winsocket编程

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

mfc socket 是否无效_基于mfc的socket通信_socket mfc

MFC局域网的winsocket编程

服务器端应用程序(创建套接字socket,绑定bind,listen,接受用户请求accept)

客户端应用程序(根据服务器应用程序所在IP和PORT创建套接字socket,连接conn)

接收数据recv(SOCKET Socket, char *recvbuf, int recvbuflen, 0);

发送数据recv(SOCKET Socket, char *recvbuf, int recvbuflen, 0);

shutdown(SOCKET Socket, SD_SEND);

closesocket(SOCKET Socket);

case wm_socket: /** we received a socket event **/。 if(wsaasyncselect(socket, windowhandle, wm_socket, fd_read | fd_write | fd_connect | fd_close | fd_accept) 。参见: socket(), setsockopt(), getsockopt(), wsaasyncselect().5.1.13 listen()简述: 创建一个套接口并申请的连接. #include int pascal far listen( socket s, int backlog)。

WSAAsyncSelect(套接字,窗口句柄,自定义窗口消息ID,事件)

1.#define WM_SOCKET WM_USER+11 使用宏定义消息ID

2.afx_msg LRESULT OnSocket(WPARAMw, LPARAM l); 在CServerMFCDlg.h中声明消息响应函数

3.将消息映射到处理函数

BEGIN_MESSAGE_MAP(CServerMFCDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_LISTENBUTTON, &CServerMFCDlg::OnClickedListenbutton)
ON_MESSAGE(WM_SOCKET,OnSocket)  在CServerMFCDlg.cpp中加入这句,将消息映射到处理函数
END_MESSAGE_MAP()
控件变量ID说明

ListBox(消息栏)

IDC_MESSAGELIST

m_MessageList

类别为Control控件

ListBox(用户)

mfc socket 是否无效_socket mfc_基于mfc的socket通信

IDC_ONLINELIST

m_OnlineList

类别为Value,类型为CString

EditBox(IP)

IDC_IPEDIT

类别为Value,类型为CString

EditBox(Port)

IDC_PORTEDIT

m_port

类别为Value,类型为CString

Button(按钮)

IDC_LISTENBUTTON

类向导添加单击事件

控件变量ID说明

ListBox(消息栏)

IDC_MESSAGELIST

m_MessageList

类别为Control控件

基于mfc的socket通信_socket mfc_mfc socket 是否无效

EditBox(消息发送栏)

IDC_SENDEDIT

m_SendMessage

类别为Value,类型为CString

EditBox(IP)

IDC_IPEDIT

类别为Value,类型为CString

EditBox(Port)

IDC_PORTEDIT

m_port

类别为Value,类型为CString

Button(发送按钮)

IDC_SENDBUTTON

类向导添加单击事件

Button(连接按钮)

IDC_CONNBUTTON

类向导添加单击事件

Button(断开按钮)

mfc socket 是否无效_socket mfc_基于mfc的socket通信

IDC_CLOSEBUTTON

类向导添加单击事件

1.char*类型的变量转换成CString类型变量

 char *buffer = new char[1024];
 CString receivedStr;
 receivedStr.Format(_T("%s"),CStringW(buffer));
 写成receivedStr.Format(_T("%s"),buffer);会出现乱码,应用CStringW进行转换

2.CString类型的变量转换成char*类型变量

CString sendInfo;
USES_CONVERSION;
char *buf = T2A(sendInfo.GetBuffer(0));

2.接收数据时出现多余的数据

char* buffer = new char[DEFAULT_BUFLEN];
int res = recv(s,buffer,DEFAULT_BUFLEN,0);
buffer[res] = '\0';//res为接收到的字节数,这里用\0表示字符串结束

3.在服务器端获得客户端的IP和端口

sockaddr_in m_client;
int sz;
sz = sizeof(sockaddr_in);
ClientSocket =  accept(ListenSocket, (sockaddr*)&m_client, &sz);
char* clientIP = inet_ntoa(m_client.sin_addr);//获得主机IP
u_short clientPort = ntohs(m_client.sin_port);//获得主机端口号

4.send发送数据时总是不能发送正确字节数数据

 CString::GetLength()获得正确的字节数
 CString str("你好ab");
 str.GetLength();//结果为4,当发送数据时,只能发送"你好"到另一端
 CStringA(str).GetLength();//结果为6,正确

5.MFC空间添加变量更新数据

 UpdateData(TRUE);//将控件值赋值给控件变量
 UpdateData(FALSE);//将控件变量同步到控件中

服务器端口:

cmd中netstat -ano 命令可以看出端口9080被

这里写图片描述

基于mfc的socket通信_mfc socket 是否无效_socket mfc

一个客户端(端口号为1135)请求连接服务器:

这里写图片描述

建立连接后修改了连接状态,由LISTENING变为ESTABLISHED

这里写图片描述

另一个客户端请求连接服务器(端口号为1135)

这里写图片描述

发送消息可以广播到其它的客户端

这里写图片描述

最后其中一个客户端(端口号为1135)断开连接

这里写图片描述

https://github.com/15045120/winsocket-usage/tree/master/ClientMFC

https://github.com/liuyunzhuge/blog/tree/master/backbone_ajax。https://github.com/chenall/chenall/tree/master/php/php_proxy。https://github.com/blackberry/cascades-community-samples/tree/master/nfcracetimeway。

[1]谢希仁.计算机网络[M] (第7版).电子工业出版社,2007.

[2]户根勤.网络是怎样连接的[M].人民邮电出版社,2017.1.

[3]徐斌.MFC小型局域网的实现[D].西南大学网络与继续教育学院专升本论文,2014:5-10.

参考:https://www.cnblogs.com/viviwind/archive/2012/08/02/2619451.html。 from http://www.cnblogs.com/super119/archive/2011/03/26/1996125.html。- https://www.cnblogs.com/kevin-yuan/archive/2012/11/23/2784610.html。

[5]u010306834.关于VS2010 CString.Format()之后乱码的问题[OL].(2018-05-28)https://blog.csdn.net/u010306834/article/details/39495305.

https://blog.csdn.net/angelasan/article/details/44917283。https://blog.csdn.net/godsight/article/details/52810391。http://blog.csdn.net/gubenpeiyuan/article/details/25618177#。

primer 第四版http://blog.csdn.net/odaynot/article/details/7923148http://blog.csdn.net/xiaofei2010/article/details/7609355。答:客户选择“点击此处获取短信验证码,如5分钟内获取不到,请重新点击”后,系统如出现“申请短信验证码成功”不要关闭此页面,等收到验证码后mfc socket 是否无效,输入验证码mfc socket 是否无效,点击“下一步”。参见: accept(), bind(), getsockname(), socket(), select(), wsaasyncselect().5.1.5 getpeername()简述: 获取与套接口相连的端地址。

[8]郑文亮.CString::GetLength()获得字节数的正确方法[OL].(2018-05-28)https://www.cnblogs.com/zhwl/archive/2012/11/09/2762962.html.

sampleshttps://msdn.microsoft.com/en-us/library/windows/desktop/ms386469(v=vs.60).aspx | https://msdn.microsoft.com/en-us/library/windows/desktop/ms177543(v=vs.60).aspx。/// go to https://msdn.microsoft.com/en-us/library/windows/desktop/ms633534%28v=vs.85%29.aspx for more。参考:https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx。


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

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

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