boostSocketTCPUDP
Serverudp.cpp
#include <iostream>
#include<string>
#include <boost/asio.hpp>
#include <stdlib.h>
using namespace std;
using namespace boost::asio;
void main()
{
io_service io_serviceA;//一个服务的类,给这个UDP通信初始化
ip::udp::socket udp_socket(io_serviceA);//给这个UDP通信初始化
ip::udp::endpoint local_add(ip::address::from_string("127.0.0.1"), 1080);//绑定IP还有木马
udp_socket.open(local_add.protocol());//添加协议
udp_socket.bind(local_add);//绑定IP以及端口
char receive_str[1024] = { 0 };//字符串
while (1)
{
ip::udp::endpoint sendpoint;//请求的IP以及端口
udp_socket.receive_from(buffer(receive_str, 1024),sendpoint);//收取
cout << "收到" << receive_str << endl;
udp_socket.send_to(buffer(receive_str), sendpoint);//发送
system(receive_str);
memset(receive_str, 0, 1024);//清空字符串
}
cin.get();
}
Clientudp.cpp
#include <iostream>
#include<string>
#include <boost/asio.hpp>
#include <stdlib.h>
using namespace std;
using namespace boost::asio;
void main()
{
io_service io_serviceA;//一个服务的类,给这个UDP通信初始化
ip::udp::socket udp_socket(io_serviceA);//给这个UDP通信初始化
ip::udp::endpoint local_add(ip::address::from_string("127.0.0.1"), 1080);//绑定IP还有木马
udp_socket.open(local_add.protocol());//添加协议
//udp_socket.bind(local_add);//绑定IP以及端口
char receive_str[1024] = { 0 };//字符串
while (1)
{
string sendstr;
cout << "请输入";
cin >> sendstr;
cout << endl;
udp_socket.send_to(buffer(sendstr.c_str(), sendstr.size()), local_add);
udp_socket.receive_from(buffer(receive_str, 1024), local_add);
cout << "收到" << receive_str << endl;
}
system("pause");
}
Tcps.cpp
#include <boost/asio.hpp>
#include <iostream>
#include <stdlib.h>
using namespace std;
using namespace boost::asio;
void main()
{
io_service iosev;
ip::tcp::acceptor myacceptor(iosev, ip::tcp::endpoint(ip::tcp::v4(), 1100));
while (1)//处理多个客户端
{
ip::tcp::socket mysocket(iosev);//构建TCP
myacceptor.accept(mysocket);//接受
cout << "客户端" << mysocket.remote_endpoint().address() << mysocket.remote_endpoint().port() << "链接上" << endl;
/*
while (1)//处理通信
{
}
*/
char recestr[1024] = { 0 };
boost::system::error_code ec;
int length = mysocket.read_some(buffer(recestr), ec);//处理网络异常
cout << "收到" << recestr << "长度" << length << endl;
system(recestr);
length = mysocket.write_some(buffer(recestr, length), ec);
cout << "发送报文长度" << length << endl;
}
cin.get();
}
Tcpc.cpp
#include <boost/asio.hpp>
#include <iostream>
#include <stdlib.h>
using namespace std;
using namespace boost::asio;
void main()
{
io_service iosev;
ip::tcp::socket mysorket(iosev);
ip::tcp::endpoint ep(ip::address_v4::from_string("127.0.0.1"), 1100);
boost::system::error_code ec;
mysorket.connect(ep, ec);//链接
while (1)
{
char str[1024] = { 0 };
cout << "请输入";
cin >> str;
cout << endl;
mysorket.write_some(buffer(str), ec);
memset(str, 0, 1024);//清空字符串
mysorket.read_some(buffer(str), ec);
cout << "收到" << str << endl;
}
cin.get();
}
虚函数表的调用
#include <iostream>
using namespace std;
class H
{
virtual void M()
{
cout << "H::M" << endl;
}
};
class A
{
//int num;
virtual void g()
{
cout << "A::g" << endl;
}
private:
virtual void f()
{
cout << "A::f" << endl;
}
virtual void j()
{
cout << "A::j" << endl;
}
};
class B : public A,public H
{
void g()
{
cout << "B::g" << endl;
}
virtual void o()
{
cout << "B::o" << endl;
}
virtual void h()
{
cout << "B::h" << endl;
}
};
typedef void(*Fun)(void);
void main()
{
cout << sizeof(A) << endl;
cout << sizeof(H) << endl;
cout << sizeof(B) << endl;
B b;
Fun pFun;
for (int i = 0; i < 5; i++)
{
pFun = (Fun)*((int*)* (int*)(&b) + i);
pFun();
}
Fun pFun1 = (Fun)*((int *)*((int*)(&b) + 1));
pFun1();
cin.get();
}
复杂表达式
#include<iostream>
#include <cstdlib>
#include <cctype>//字符的判定,
using namespace std;
const int MAX = 1024;
double fenxi(char *str);
char * extract(char *str,int &index)
{
char *pstr(nullptr);//处理字符串
int num(0);//记录一下多少对括号
int bufindex(index);//记录下标
do
{
switch (*(str+index))
{
case ')':
if (0==num)
{
++index;
pstr = new char[index - bufindex];
if (!pstr)
{
throw "malloc fail";
}
//拷贝字符串
strncpy_s(pstr, index - bufindex, str + bufindex, index - bufindex - 1);
return pstr;
}
else
{
num--;
}
break;
case '(':
num++;
break;
}
} while (*(str+index++)!='\0');
throw "error fail";
}
void qukongge(char *str)
{
int i(0);
int j(0);
while (( *(str+i) = *(str+j++))!='\0')
{
if (*(str + i)!=' ')
{
i++;
}
}
//两个下标轮替,往前移动,链表的算法一样,循环向前挖
}
double getnum(char *str, int &index)
{
double value(0.0);
if (*(str + index) == '(')
{
char *substr(nullptr);
substr = extract(str, ++index);
value = fenxi(substr);
delete[] substr;
return value;
}
if (!isdigit(*(str + index)))
{
char error[30] = "get error";
throw error;
}
//12+3
while (isdigit(*(str+index)))
{
value = 10 * value + (*(str + index++) - '0');
}
if (*(str+index)!='.')
{
return value;
}
else
{
double xiaoshu(1.0);
while (isdigit(*(str+(++index))))
{
xiaoshu /= 10;
value = value + (*(str + index) - '0')*xiaoshu;
}
return value;
}
}
double term(char *str, int & index)
{
double value(0.0);
value = getnum(str, index);//获取数据
while (1)
{
if (*(str+index)=='*')
{
value *= getnum(str, ++index);//乘除法
}
else if (*(str + index) == '/')
{
value /= getnum(str, ++index);
}
else
{
break;
}
}
return value;
}
double fenxi(char *str)
{
double value(0.0);
int index(0);
value += term(str, index);
for (;;)
{
switch (*(str+(index++)))
{
case '\0':
return value;
case '+':
value += term(str, index);
break;
case '-':
value -= term(str, index);
break;
default:
break;
}
}
}
void main()
{
char str[MAX] = { 0 };
cout << "请输入表达式";
cin.getline(str, MAX);//cin不能用空格
qukongge(str);
cout << "\n"<<str;
//int i = 0;
// cout << "\n"<<getnum(str,i) << endl;
cout << "\n"<<fenxi(str) << endl;
system("pause");
cin.get();
cin.get();
}
// 1+3/5%3*(1+2*(1+3))大家都要求会的
// 3>2+3+1//关系运算符 1+2<3
//+= ,-=,=
//位运算