您的位置:首页 > 理论基础 > 计算机网络

1Boost之TCP,Client and Server

2014-09-06 23:14 316 查看


客户端代码

#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
<boost/asio.hpp>

#include
<iostream>

#include
<stdlib.h>

 

using
namespace
std;

using
namespace
boost::asio;

 

void
main()

{

   
io_service
iosev;

   
//这里使用ip v4协议,端口号是1100

   
ip::tcp::acceptor
myacceptor(iosev,
ip::tcp::endpoint(ip::tcp::v4(),
1100));

   
while (1)

   
{

       
//构建TCP

       
ip::tcp::socket
mysocket(iosev);

       
//接受套接字

       
myacceptor.accept(mysocket);

       
cout <<
"客户端"
<< mysocket.remote_endpoint().address()
<< ":"

           
<< mysocket.remote_endpoint().port()
<< "链接上"
<< endl;

 

       
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();

}

运行结果:



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: