asio学习2: TCP服务器端:对准时间 解析
2007-09-16 10:50
337 查看
#include <ctime>
#include <iostream>
#include <string>
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
std::string make_daytime_string()
{
using namespace std;
time_t now = time(0);
return ctime(&now);
}
int _tmain(int argc, _TCHAR* argv[])
{
try
{
boost::asio::io_service io_service;
//新建一个asio::ip::tcp::acceptor对象来监听新的连接.我们监听TCP端口13,IP版本为V4
/*
*以下构造函数相当于以下步骤
* basic_socket_acceptor<tcp> acceptor(io_service);
* acceptor.open(tcp::v4());
* acceptor.bind(tcp::endpoint(13));
* acceptor.listen(0);//default
*/
tcp::acceptor acceptor(io_service,tcp::endpoint(tcp::v4(), 13));
//basic_endpoint(const Protocol& protocol, unsigned short port_num)
//此构造函数一般作为服务器接受连接使用,ip地址即为INADDR_ANY
//这是一个iterative server,也就是说同一时间只能处理一个连接.
//建立一个socket来表示一个和客户端的连接, 然后等待客户端的连接
for(;;)
{
tcp::socket socket(io_service);
acceptor.accept(socket);
std::string message = make_daytime_string();
boost::asio::write(socket,boost::asio::buffer(message),
boost::asio::transfer_all(),boost::asio::ignore_error());
}
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
return 0;
}
下面是winsock api 所写:
#include <iostream>
#include <string>
#include <ctime>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
std::string make_daytime_string()
{
using namespace std;
time_t now = time(0);
return ctime(&now);
}
int main(int argc, char* argv[])
{
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2,2),&wsaData) != 0)
{
std::cout << " lib error ";
return -1;
}
SOCKET listenSocket;
if((listenSocket = socket(AF_INET, SOCK_STREAM,0)) == INVALID_SOCKET)
{
std::cout << "socket error ";
return -1;
}
SOCKADDR_IN addr;
memset(&addr,0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(13);
addr.sin_addr.s_addr = htonl(ADDR_ANY);
if(bind(listenSocket,(sockaddr*)&addr,sizeof(addr)) == SOCKET_ERROR)
{
std::cout << "bind error ";
}
listen(listenSocket,5);
for(;;)
{
SOCKET socket = accept(listenSocket,0,0);
std::string timeStr = make_daytime_string();
send(socket,timeStr.c_str(),timeStr.length(),0);
closesocket(socket);
}
}
相关文章推荐
- asio学习2: TCP服务器端:对准时间 解析
- asio学习2: TCP服务器端:对准时间 解析
- Asio学习1: TCP客户端:对准时间 解析
- asio学习1: TCP客户端:对准时间 解析
- Asio学习1: TCP客户端:对准时间 解析
- asio学习3: 异步tcp服务器端(datetime)
- asio学习3: 异步tcp服务器端(datetime)
- asio学习3: 异步tcp服务器端(datetime)
- 【Java学习笔记】TCP客户端/服务器端
- 网络编程学习之TCP客户端与服务器端
- Linux 网卡驱动学习(六)(应用层、tcp 层、ip 层、设备层和驱动层作用解析)
- Linux 网卡驱动学习(六)(应用层、tcp 层、ip 层、设备层和驱动层作用解析)
- 【TCP/IP协议学习】TCP首部解析
- TCP-IP学习笔记(七)——ARP:地址解析协议
- linux网络编程,将服务器端时间通过tcp传送到客户端
- 网络基础学习笔记一------TCP通信之服务器端
- 菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析
- 菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析
- 菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析
- android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据