MFC学习 socket
下面未处理异常
tcpserver.cpp
#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //或用inet_addr("192.168.1.1");
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
bind(sockSrv, (sockaddr FAR *)&addSrv, sizeof(addSrv));
int iResult = listen(sockSrv, SOMAXCONN);//等待连结数, 最大连接请求数 SOMAXCONN
printf("server ip:%s\n", inet_ntoa(addSrv.sin_addr));
printf("server port:%d\n", ntohs(addSrv.sin_port));
printf("start listening...\n"); while(TRUE)
{
sockaddr_in addClient;
int iLen = sizeof(addClient);
SOCKET sockConn = accept(sockSrv, (sockaddr FAR *)&addClient, &iLen);
printf("client ip:%s\n", inet_ntoa(addClient.sin_addr));
printf("client port:%d\n", ntohs(addClient.sin_port));
char sendBuf[];
sprintf(sendBuf, "Welcome %s to server", inet_ntoa(addClient.sin_addr));
send(sockConn, sendBuf, strlen(sendBuf) + , ); //多写一个字节, 可以多个\0
char recvBuf[];
recv(sockConn, recvBuf, , ); //tcp用recv, udp用recvfrom
printf("%s\n", recvBuf);
closesocket(sockConn);
}
closesocket(sockSrv);
WSACleanup();
return ;
}
tcpclient.cpp
#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockClient = socket(AF_INET, SOCK_STREAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //服务器地址
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
connect(sockClient, (sockaddr FAR *)&addSrv, sizeof(addSrv));
char recvBuf[];
recv(sockClient, recvBuf, , );
printf("%s\n", recvBuf);
send(sockClient, "hello123", strlen("hello123") + , );
closesocket(sockClient);
WSACleanup();
system("pause");
return ;
}
udpserver.cpp
#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //或用inet_addr("192.168.1.1");
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
bind(sockSrv, (sockaddr FAR *)&addSrv, sizeof(addSrv)); printf("server ip:%s\n", inet_ntoa(addSrv.sin_addr));
printf("server port:%d\n", ntohs(addSrv.sin_port)); while(TRUE)
{
sockaddr_in addClient;
int iLen = sizeof(addClient);
char recvBuf[];
recvfrom(sockSrv, recvBuf, , , (sockaddr*)&addClient, &iLen);
printf("client ip:%s\n", inet_ntoa(addClient.sin_addr));
printf("client port:%d\n", ntohs(addClient.sin_port));
printf("%s", recvBuf);
}
closesocket(sockSrv);
WSACleanup();
return ;
}
udpclient.cpp
#include "WinSock2.h"
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 1666
int main()
{
WORD wVersion = MAKEWORD(, );
int err;
WSADATA wsaData;
err = WSAStartup(wVersion, &wsaData);
SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, NULL);
sockaddr_in addSrv;
addSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //或用inet_addr("192.168.1.1");
addSrv.sin_family = AF_INET;
addSrv.sin_port = htons(PORT);
sendto(sockClient, "hello", strlen("hello") + , , (SOCKADDR*)&addSrv, sizeof(addSrv));
closesocket(sockClient);
WSACleanup();
system("pause");
return ;
}
MFC学习 socket的更多相关文章
- 【总结】学习Socket编写的聊天室小程序
1.前言 在学习Socket之前,先来学习点网络相关的知识吧,自己学习过程中的一些总结,Socket是一门很高深的学问,本文只是Socket一些最基础的东西,大神请自觉绕路. 传输协议 TCP:Tra ...
- MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_toolbar;CImageList ...
- python学习------socket编程
一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...
- 基于MFC的socket编程
网络编程 1.windows 套接字编程(开放的网络编程接口)添加头文件#include<windows.h> 2.套接字及其分类 socket分为两种:(1)数据报socket:无连接套 ...
- 在Android手机上学习socket程序
我们都知道Android手机是基于Linux系统的,在没有Linux环境,但是想学习socket编程的同学可以在Android手机中试试,利用ndk编译可执行文件在Android手机中运行.不同于动态 ...
- MFC学习笔记1---准备工作
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...
- MFC 学习笔记
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...
- 新手MFC学习之Socket练习
事实上MFC这东西吧,好像也不光是MFC,非常多东西,事实上我如今才感觉到,假设想高速做一个东西出来的话.是没有必要系统的学关于这个东西的所有知识的.比方我想做一个MFC相似QQ的软件,可是我又不想花 ...
- 基于MFC的socket编程(异步非阻塞通信)
对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清, ...
随机推荐
- bzoj1006 神奇的国度
Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系 ...
- Python装饰器通用样式
装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...
- IIS SMTP Queue stuck
1. review smtp logs in C:\Windows\System32\LogFiles\SMTPSVC1, 2. find 421 error 2014-12-08 02:02:40 ...
- 查询SQLServer 服务器,执行过的SQL语句耗时!
SELECT creation_time N'语句编译时间',last_execution_time N'上次执行时间',total_physical_reads N'物理读取总次数',total_l ...
- C语言每日一题之No.1
鉴于在学校弱弱的接触过C,基本上很少编程,C语言基础太薄弱.刚好目前从事的是软件编程,难度可想而知.严重影响工作效率,已无法再拖下去了.为此,痛下决心恶补C语言.此前只停留在看书,光看好像也记不住,C ...
- Spring MVC 教程,快速入门,深入分析
http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: ...
- css3旋转小三角
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【SQL Server】系统学习之一:表表达式
本节讨论的相关内容包括:视图.派生表.CTE.内联表值函数 场景:如果要查询一组数据(例如聚合数据,也就是几个表聚合在一起的数据),这些数据并未在数据库中以表的形式存在. 1.视图:通常用来分解大型的 ...
- 黄聪:MYSQL提交一批ID,查询数据库中不存在的ID并返回
假设你数据库有个A表: ID NAME 1 aaa 2 bbb 3 ccc 4 ddd 需求:给你几个ID,返回A表中不存在的ID? 例如提交1,2,8,9 返回8,9 sel ...
- 黄聪:wordpress自定义post_type,并且自定义固定链接
<? class zsjh { function init() { add_action( 'init', array($this,'create_zsjh') ); add_filter('p ...