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

相关文章

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

记录AS混淆代码模板

开启混淆得先在build.gradle文件中把 minifyEnabled false改成true,以及shrinkResources true//去除无用的resource文件 这些是写在proguard-rules.pro文件内的 指定代码的压缩级别 -optimizationpasses 5 包明不混合大小写 -dontusemixedcaseclassnames 不去忽略非公共

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如