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)等,初学者往往迷惑不清, ...
随机推荐
- JQueryMobile + PhoneGap 经验总结
1. pageinit & pageshow JQM的官方手册重点提醒了使用$(document).bind(‘pageinit’)代替$(document).ready(). 但当你需要对某 ...
- Android退出程序时的"再按一次退出"实现
android 个人觉得当用户按下后退键时,出现"再按一次退出"的提示防止误操作比弹出一个对话框是会更人性化的.话不多说上代码: 第一种:重写onKeyDown来监听: long ...
- 10 程序员必备:Linux日常维护命令
一.服务器硬件配置 1.查看硬盘及分区情况 # fdisk -l 2.查看分区空间使用情况 可以查看各分区大小.已使用.可用.已使用百分比.挂载情况 1)默认单位为K # df 2)可读性更好的显示, ...
- Hadoop:使用原生python编写MapReduce
功能实现 功能:统计文本文件中所有单词出现的频率功能. 下面是要统计的文本文件 [/root/hadooptest/input.txt] foo foo quux labs foo bar quux ...
- How to install Wordpress 4.0 on CentOS 7.0
This document describes how to install and configure Wordpress 4.0 on CentOS 7.0. WordPress started ...
- Android一 流
补充Java知识:流 java.io 四个抽象类: 字节流:InputStream OutputStream 字符流:Reader Writer 站在程序角度上,输入(读入到程序)输出(从程序写出) ...
- hive查询语句
一. 为什么hive是数据仓库 hive局限于hdfs, 不能进行记录级别的增删改 hive底层的mapreduce启动耗时很长, 无法做到传统数据库的秒查, 只适合离线分析 hive不支持事务, 无 ...
- XAMPP Error: Apache shutdown unexpectedly. 解决思路
我建议首先 运行在cmd中运行 (安装目录)apache/bin/httpd.exe 之后就很好确定错误的具体原因了,而不是根据下面的那样猜端口,比如我遇到的问题,就是配置的路径不存在导致的. 参考资 ...
- jdbc:java数据库连接
1.导jar包 四大参数: 1.加载驱动类:Class.forName("com.mysql.jdbc.Driver"); 2.url:jdbc:mysql://localhost ...
- php之面向对象
<?php declare(encoding='UTF-8'); class Site{ /*成员变量*/ var $url; var $title = "gunduzi" ...