• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++、python和go语言实现的简单客户端服务器代码示例

C++、python和go语言实现的简单客户端服务器代码示例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了我的世界服务器客户端,excel服务器客户端,客户端和服务器的区别,你的世界服务器客户端,易语言服务器客户端等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

工作中用到了C/S模型,所做的也无非是给服务器发数据,但开发阶段会遇到程序自身的回环测试,需要用到简单的服务端以便验证数据发送的正确性。

写软件用C++,跑测试用python,这段时间也刚好看go语言,所以都要有demo。以下三组程序实现的功能相同,这里一起做下总结。

一、C++实现

Boost.Asio是一个跨平台的C++库,它用现代C++方法为网络和底层I/O程序提供了一致的异步I/O模型。 为了跨平台,我用boost库实现,具体如下。

服务端代码:
/*
     File      : svr.cpp
     Author    : Mike
     E-Mail    : Mike_Zhang@live.com
*/

#include <iostream>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;
enum {max_length = 1024};

typedef boost::shared_ptr<tcp::socket> socket_ptr;

int main()
{
    boost::asio::io_service io_service;
    tcp::acceptor a(io_service, tcp::endpoint(tcp::v4(), atoi("12345")));
    for (;;)
    {
        socket_ptr sock(new tcp::socket(io_service));
        a.accept(*sock);
        char data[max_length];
        boost::system::error_code error;
        size_t length = sock->read_some(boost::asio::buffer(data), error);
        data[length] = 0;
        std::cout<<data<<std::endl;
        sock->close();
    }
    return 0;
}
</div>

客户端代码:

/*
     File      : cli.cpp
     Author    : Mike
     E-Mail    : Mike_Zhang@live.com
*/
#include <iostream>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;
enum { max_length = 1024 };

int main(int argc, char* argv[])
{
    boost::asio::io_service io_service;
    tcp::resolver resolver(io_service);
    tcp::resolver::query query(tcp::v4(), "127.0.0.1","12345");
    tcp::resolver::iterator iterator = resolver.resolve(query);

    tcp::socket s(io_service);
    s.connect(*iterator);

    std::cout << "Please input: ";
    char request[max_length];
    std::cin.getline(request, max_length);
    size_t request_length = strlen(request);
    boost::asio::write(s, boost::asio::buffer(request, request_length));
    return 0;
}
</div>

编译:g++ cli.cpp -o cli -lboost_system -lboost_thread-mt

二、python实现

服务端代码:

'''
     File      : svr.py
     Author    : Mike
     E-Mail    : Mike_Zhang@live.com
'''
import socket,os
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.bind(('127.0.0.1', 12345)) 
sock.listen(5) 
while True: 
    connection,address = sock.accept() 
    buf = connection.recv(1024) 
    print buf           
    connection.close()
</div>

客户端代码:
'''
     File      : cli.py
     Author    : Mike
     E-Mail    : Mike_Zhang@live.com
'''
import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.connect(('127.0.0.1', 12345)) 
#sock.send('Test\n') 
sock.send(raw_input("Please input : ")) 
sock.close()
</div>

三、go语言实现

服务端代码:

/*
     File      : svr.go
     Author    : Mike
     E-Mail    : Mike_Zhang@live.com
*/
package main

import(
    "net"
    "fmt"
    "bufio"
)

func main() {
    client,err := net.Listen("tcp","127.0.0.1:12345")
    if err != nil {
        fmt.Printf("Error : %s\n",err.String())
    }
    for {
        if c, err := client.Accept(); err == nil {
            defer c.Close()
            line, _ := bufio.NewReader(c).ReadString('\n')
            fmt.Println(line)
        }
    }
}
</div>
客户端代码:

/*
     File      : cli.go
     Author    : Mike
     E-Mail    : Mike_Zhang@live.com
*/
package main

import(
    "net"
    "fmt"
)

func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:12345")
    if err != nil {
        fmt.Printf("Error : %s\n",err.String())
    }
    conn.Write([]byte("Just a test"))    
}
</div>

运行效果(go语言为例):

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++、python和go语言实现的简单客户端服务器代码示例

相关文章

  • 2017-05-28C++设计模式之模板方法模式
  • 2017-05-28深入讲解C++数据类型转换的相关函数的知识
  • 2017-05-28C 语言简单加减乘除运算
  • 2017-05-28C语言 数据结构之链表实现代码
  • 2017-05-28C语言新建临时文件和临时文件名的方法
  • 2017-05-28八皇后问题实现代码分享
  • 2017-05-28c语言实现把文件中数据读取并存到数组中
  • 2017-05-28C++ boost::asio编程-同步TCP详解及实例代码
  • 2017-05-28为什么要学习C语言 C语言优势分析
  • 2017-05-28深入理解C++中的文件操作

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 深入c语言continue和break的区别详解
    • C语言中函数与指针的应用总结
    • Cocos2d-x中CCEditBox文本输入框的使用实例
    • 数组循环移位操作实例
    • STl中的排序算法详细解析
    • 浅谈const变量赋值报错分析
    • 深入c++中临时对象的析构时机的详解
    • c语言定时器示例分享
    • VC++ 获取系统时间的方法汇总
    • C语言实现选择排序、冒泡排序和快速排序的代码示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有