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)等,初学者往往迷惑不清, ...
随机推荐
- 用javacsv API 来操作csv文件
javacsv是国外开发的一个比较好的操作csv文件的API,这里简单讲一下用法. 先下载javacsv2.0.zip的文件,解压后,把javacsv.jar 添加到项目中. 本站下载地址: htt ...
- UIview定义背景图片
UIImage *image = [UIImage imageNamed:@"bgimagename"]; UIView *view = [[UIView alloc]ini ...
- log4net 部署到服务器之后 无法记录日志问题 解决方法
通常情况下无法记录日志的原因是:权限问题 1. 右键该站点的程序文件夹>>安全 2. 找到 IIS_IUSR 用户,然后编辑权限 允许修改,保存即可 3. 搞定
- Hadoop:实战Web日志分析
示例场景 日志说明 有两台Web服务器,日志文件存放在/usr/local/nginx/logs/目录,日志默认为nginx定义格式.如: 123.13.17.13 - - [25/Aug/2016: ...
- 黄聪:wordpress后台导致fonts.googleapis.com、ajax.googleapis.com加载慢的解决方法
方法1.使用我做的插件.[googleapis-to-useso] 方法2.在functions.php文件里面添加下面的代码就行了. if(is_admin()) { function hcsem_ ...
- Authentication token manipulation error for ubuntu ubuntu-16.04.1-desktop-amd64
https://ubuntuforums.org/showthread.php?t=1772894 Hi, I faced the same problem when I tried to recov ...
- input file 上传文件
面试的时候遇到一个问题,要求手写的方式上传文件. 本来觉得很简单,但是结果怎么也成功不了. 前台: <form ID="form1" action="AcceptF ...
- HttpClient和HttpURLConnection整合汇总对比
性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭 ...
- Xshell5最新版激活
Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件.它使得用户能轻松和安全地从Windows PC上访问Unix/Linux主机. 以上内容全部为广 ...
- JavaScript表单验证实例
1. 长度限制<script>function test(){if(document.a.b.value.length>50){alert("不能超过50个字符!" ...