boost 库 asio 网络编程

没有英文名 2012-02-18 12:32:12
编译下面的这个程序 报告一大堆的错误 实在不懂 望各位大侠指点下
谢谢

// chatSer.cpp : 定义控制台应用程序的入口点。
//
/*
#ifdef _MSC_VER
#define _WIN32_WINNT 0x0501
#endif
#define BOOST_REGEX_NO_LIB
#define BOOST_DATE_TIME_SOURCE
#define BOOST_SYSTEM_NO_LIB
*/
#include "stdafx.h"
#include<iostream>
#include <boost/asio.hpp>
#include<boost/system/error_code.hpp>

using namespace boost::asio;
using namespace std ;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"服务器端启动:"<<endl;
io_service ios;
;
ip::udp::socket socket(ios,ip::udp::endpoint (ip::udp::v4(),6666)) ; //创建udp的socket对象

while(1)
{
char buf[100];
char buf2[100];
ip::udp::endpoint ep;
boost::system:: error_code ec;
socket.receive_from(buf,ep,0,ec);
if(ec && ec!=error::message_size)
{
throw(boost::system::system_error(ec));
}
cout<<"请求链接的站点是:"<<ep.address()<<endl;
socket.send_to("哈哈!",ep);

}
return 0;
}
错误信息

g:\程序\boost\chatser\chatser\chatser.cpp(28): warning C4101: “buf2”: 未引用的局部变量
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(88): error C2825: 'Buffers': 当后面跟“::”时必须为类或命名空间
1> d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(85): 编译类 模板 成员函数“boost::asio::detail::buffer_sequence_adapter<Buffer,Buffers>::buffer_sequence_adapter(Buffers (&))”时
1> with
1> [
1> Buffer=boost::asio::mutable_buffer,
1> Buffers=const char [100]
1> ]
1> d:\boost_1_48_0\boost\asio\detail\win_iocp_socket_service.hpp(342): 参见对正在编译的类 模板 实例化“boost::asio::detail::buffer_sequence_adapter<Buffer,Buffers>”的引用
1> with
1> [
1> Buffer=boost::asio::mutable_buffer,
1> Buffers=const char [100]
1> ]
1> d:\boost_1_48_0\boost\asio\datagram_socket_service.hpp(348): 参见对正在编译的函数 模板 实例化“size_t boost::asio::detail::win_iocp_socket_service<Protocol>::receive_from<const char[100]>(boost::asio::detail::win_iocp_socket_service<Protocol>::implementation_type &,MutableBufferSequence (&),boost::asio::ip::basic_endpoint<InternetProtocol> &,boost::asio::socket_base::message_flags,boost::system::error_code &)”的引用
1> with
1> [
1> Protocol=boost::asio::ip::udp,
1> MutableBufferSequence=const char [100],
1> InternetProtocol=boost::asio::ip::udp
1> ]
1> d:\boost_1_48_0\boost\asio\basic_datagram_socket.hpp(788): 参见对正在编译的函数 模板 实例化“size_t boost::asio::datagram_socket_service<Protocol>::receive_from<const char[100]>(boost::asio::detail::win_iocp_socket_service<Protocol>::implementation_type &,MutableBufferSequence (&),boost::asio::ip::basic_endpoint<InternetProtocol> &,boost::asio::socket_base::message_flags,boost::system::error_code &)”的引用
1> with
1> [
1> Protocol=boost::asio::ip::udp,
1> MutableBufferSequence=const char [100],
1> InternetProtocol=boost::asio::ip::udp
1> ]
1> g:\程序\boost\chatser\chatser\chatser.cpp(31): 参见对正在编译的函数 模板 实例化“size_t boost::asio::basic_datagram_socket<Protocol>::receive_from<char[100]>(const MutableBufferSequence (&),boost::asio::ip::basic_endpoint<InternetProtocol> &,boost::asio::socket_base::message_flags,boost::system::error_code &)”的引用
1> with
1> [
1> Protocol=boost::asio::ip::udp,
1> MutableBufferSequence=char [100],
1> InternetProtocol=boost::asio::ip::udp
1> ]
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(88): error C2039: “const_iterator”: 不是“`global namespace'”的成员
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(88): error C2146: 语法错误: 缺少“;”(在标识符“iter”的前面)
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(88): error C2734: “const_iterator”: 如果不是外部的,则必须初始化常量对象
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(88): error C2065: “iter”: 未声明的标识符
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(88): error C2228: “.begin”的左边必须有类/结构/联合
1> 类型是“const char [100]”
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(89): error C2825: 'Buffers': 当后面跟“::”时必须为类或命名空间
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(89): error C2039: “const_iterator”: 不是“`global namespace'”的成员
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(89): error C2146: 语法错误: 缺少“;”(在标识符“end”的前面)
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(89): error C2734: “const_iterator”: 如果不是外部的,则必须初始化常量对象
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(89): error C2086: “const char const_iterator[100]”: 重定义
1> d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(88) : 参见“const_iterator”的声明
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(89): error C2228: “.end”的左边必须有类/结构/联合
1> 类型是“const char [100]”
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(90): error C2065: “iter”: 未声明的标识符
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(90): error C2563: 在形参表中不匹配
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(90): error C2568: “!=”: 无法解析函数重载
1> e:\vs\vc\include\xutility(1002): 可能是“_Ty *std::end(_Ty (&)[_Size])”
1> e:\vs\vc\include\xutility(988): 或 “_Container::const_iterator std::end(const _Container &)”
1> e:\vs\vc\include\xutility(982): 或 “_Container::iterator std::end(_Container &)”
1> e:\vs\vc\include\utility(407): 或 “_InIt std::end(const std::pair<_InIt,_InIt> &)”
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(90): error C2065: “iter”: 未声明的标识符
1>d:\boost_1_48_0\boost\asio\detail\buffer_sequence_adapter.hpp(92): error C2065: “iter”: 未声明的标识符
1>
1>生成失败。
1>
1>已用时间 00:00:09.17
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
编译工具是VS2010
...全文
261 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小迷 2012-02-18
  • 打赏
  • 举报
回复
socket.receive_from(buf,ep,0,ec);
改为:
socket.receive_from(buffer(buf),ep,0,ec);

socket.send_to("哈哈!",ep);
改为:
socket.send_to(buffer("哈哈!"),ep);

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧