陈赫的身高:Boost socket 同步编程示例(服务端,客户端)
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 11:39:59
服务端程序代码:
1 // BoostServer.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include
6 #include
7
8 using namespace boost::asio;
9 #define BLOCK_SIZE 64*1024
10
11 int main(int argc, char* argv[])
12 {
13 // 所有asio类都需要io_service对象
14 io_service iosev;
15 ip::tcp::acceptor acceptor(iosev,
16 ip::tcp::endpoint(ip::tcp::v4(), 1000));
17 for(;;)
18 {
19 // socket对象
20 ip::tcp::socket socket(iosev);
21 // 等待直到客户端连接进来
22 acceptor.accept(socket);
23 // 显示连接进来的客户端
24 std::cout << "client from: "
25 << socket.remote_endpoint().address() << std::endl;
26
27 boost::system::error_code ec;
28
29 // 从客户端读取数据
30 char buf[BLOCK_SIZE];
31 int len = socket.read_some(buffer(buf), ec);
32 // 或者可以使用read_until读到某个字符为止
33 // 或者可以使用某种判断方式循环读取
34
35 if (ec)
36 {
37 std::cout <<
38 boost::system::system_error(ec).what() << std::endl;
39 break;
40 }
41 std::cout.write(buf, len);
42 std::cout << len << std::endl;
43
44 Sleep(1000);
45
46 // 向客户端发送
47 len = socket.write_some(buffer(buf, len), ec);
48 if(ec)
49 {
50 std::cout <<
51 boost::system::system_error(ec).what() << std::endl;
52 break;
53 }
54 std::cout << "writed " << len << std::endl;
55 // 与当前客户交互完成后循环继续等待下一客户连接
56 }
57
58
59 return 0;
60
61 }
客户端程序代码:
1 // BoostClient.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include
6 #include
7
8 using namespace boost::asio;
9
10 #define BLOCK_SIZE 64*1024
11
12 void fill_buffer(char* s)
13 {
14 for (int i=0; i
16 s[i] = 'a';
17 }
18 }
19
20 int main(int argc, char* argv[])
21 {
22 // 所有asio类都需要io_service对象
23 io_service iosev;
24 // socket对象
25 ip::tcp::socket socket(iosev);
26 // 连接端点,这里使用了本机连接,可以修改IP地址测试远程连接
27 ip::tcp::endpoint ep(ip::address_v4::from_string("127.0.0.1"), 1000);
28 // 连接服务器
29 boost::system::error_code ec;
30 socket.connect(ep,ec);
31 // 如果出错,打印出错信息
32 if(ec)
33 {
34 std::cout << boost::system::system_error(ec).what() << std::endl;
35 return -1;
36 }
37 // 发送数据
38 char buf[BLOCK_SIZE];
39 fill_buffer(buf);
40 size_t len = socket.write_some(buffer(buf), ec);
41 std::cout << "writed " << len << std::endl;
42
43 // 接收数据
44 memset(buf, 0, BLOCK_SIZE);
45 len=socket.read_some(buffer(buf), ec);
46 std::cout.write(buf, len);
47 std::cout << len << std::endl;
48
49 return 0;
50
51 }
Boost socket 同步编程示例(服务端,客户端)
Linux 下 socket 编程示例
linux 编程SOCKET(经典)
MTK socket 编程经验(转)
Socket可移植编程
socket编程模型
Linux下Socket编程
网络socket编程指南
Socket网络编程指导
Socket网络编程学习笔记:面向连接的Socket (转)
Socket网络编程学习笔记:常用方法介绍 (转)
Ftp客户端编程
Socket编程的面纱-网络编程
[精华] socket编程原理 - ChinaUnix.net
网络socket编程指南 - 坚持学习 - DonewsBlog
揭开Socket编程的面纱-网络编程AAAA
Delphi2010中DataSnap高级技术(2)—DataSnap服务端和客户端发布分...
(原创)asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(二) ...
C#.net同步异步SOCKET通讯和多线程总结
C# Socket多线程编程实例-程序开发-红黑联盟
Linux系统环境下的Socket编程详细解析
基于Socket的UDP和TCP编程介绍
Windows核心编程(第五版)笔记 第九章 利用内核对象同步线程(Thread Sync...
Windows核心编程(第五版)笔记 第十章 同步和异步设备I/O(Synchronous...