MFC基于windows套接字函数代码示范

2024-04-30 03:38

本文主要是介绍MFC基于windows套接字函数代码示范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源文件下载:  MFC_TCP_Client_chat1.rar

关键代码:

void CMFC_TCP_Client_chat1Dlg::OnBnClickedButtonSend() //登录按钮
{// TODO: 在此添加控件通知处理程序代码//sockaddr_in serveraddr;CString strport;m_ServerIP.GetWindowTextA(m_IP);m_ServerPort.GetWindowText(strport);if (strport.IsEmpty() || m_IP.IsEmpty()){MessageBox("请设置服务器IP和端口号");return;}m_Port = atoi(strport); //字符转整数serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(m_Port);serveraddr.sin_addr.S_un.S_addr = inet_addr(m_IP);//inet_addr,字符串转IP
//	serveraddr.sin_addr.S_un.S_addr = InetPton(m_IP);if(connect(m_SockClient,(sockaddr*)&serveraddr,sizeof(serveraddr))!=0)//if (connect(m_SockClient, (sockaddr*)&serveraddr, sizeof(serveraddr)) == NULL){MessageBox("连接失败");return;}elseMessageBox("连接成功");DWORD nError = GetLastError();WSAAsyncSelect(m_SockClient,m_hWnd, CM_RECEIVE, FD_READ);//WSAAsyncSelect(m_SocketClient,m_hWnd,1000,FD_READ);//::WSAAsyncSelect(m_SocketClient,this->m_hWnd,CM_RECEIVE,FD_READ);//WSAAsyncSelect(m_SocketClient,m_hWnd,WM_USER+1000,FD_READ);CString strname, info;m_NickName.GetWindowTextA(strname);info.Format("%s-------->%s", strname, "进入聊天室了");send(m_SockClient, info.GetBuffer(0), info.GetLength(), 0);//MessageBox("already send");m_MsgList2.AddString(info);}HRESULT CMFC_TCP_Client_chat1Dlg::ReceiveInfo(WPARAM wParam, LPARAM lParam)
{char buffer[1024];if (lParam == FD_READ){int num = recv(m_SockClient, buffer, 1024, 0);if (num == -1)return E_NOTIMPL;buffer[num] = 0;m_MsgList2.AddString(buffer);}return E_NOTIMPL;
}void CMFC_TCP_Client_chat1Dlg::OnBnClickedButton2() //发送按钮
{// TODO: 在此添加控件通知处理程序代码CString strData, name, info;m_NickName.GetWindowTextA(name);//m_SendData.GetWindowTextA(info);m_SendData.GetWindowTextA(strData);//if(!name.IsEmpty()&&!info.IsEmpty())if (!name.IsEmpty() && !strData.IsEmpty()){info.Format("%s说:%s", name, strData);send(m_SockClient, info.GetBuffer(0), info.GetLength(), 0);m_MsgList2.AddString(info);m_SendData.SetWindowText("");}else{MessageBox("未连接或未输入");}
}

初始化位置添加:

// TODO: 在此添加额外的初始化代码m_SockClient = socket(AF_INET,SOCK_STREAM,0);m_ServerIP.SetWindowTextA("127.0.0.1");m_ServerPort.SetWindowTextA("6666");//::WSAAsyncSelect(m_SockClient, this->m_hWnd, CM_RECEIVE, FD_READ);DWORD error = GetLastError();m_NickName.SetWindowText("txwtech");

BOOL CMFC_TCP_Client_chat1App::InitInstance()里面添加:

if (!AfxSocketInit()) //new added,初始化套接字
 {
  //AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
  return FALSE;
 }

stdafx.h中添加:

#include "afxsock.h"

源文件下载:

 

这篇关于MFC基于windows套接字函数代码示范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947820

相关文章

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.