欢迎,来自IP地址为:182.103.254.107 的朋友

Go语言由于其方便的并发通信机制以及强大的网络支持,常常被用于服务器软件的开发。本文将示例使用Go语言来开发简单的Web服务器。

HTTP协议是应用层协议,协议模型位于TCP之上,其主要定义了web服务器同客户端浏览器交互的标准。Go对于处HTTP协议具有专用包”net/http”,用于专门接收HTTP请求及几浏览器返回响应。

当我们引入”http”包后,可以使用http.ListenAndServe()函数启动web服务,就像在TCP服务器中使用net.Listen()函数来开始侦听一样。这个函数会有一个返回值用于指示服务是否启动成功,如果启动成功,则返回值为nil,否则返回错误信息。

web服务器的地址通过专用类型http.URL来表示,这个类型中包含字符串类型的Path字段用于保存url信息;而用户请求会被封装在http.Request类型中,这个类型中则包含了一个URL字段。

如果请求变量”req”是一个HTML表单的POST请求,而”var1″是表单中的某一个输入字段,那么用户在表单中输入的内容可以通过如下的Go代码来获得:

req.FormValue("var1")

另外一种方法是调用request.ParseForm()函数,然后使用如下代码来获取对应值:

var1, found := request.Form["var1"]

这里会有两个返回值,第一个var1是对应的数值,而第二个found是一个bool类型的值,用于指示是否可以找到对应于”var1″的值。可以看出来,Form字段事实上是一个map[string][]string类型。

web服务器生成一个http.Response响应,这个响应会发送到一个http.ResponseWriter对象,这个对象处理HTTP服务器的响应,通过向该对象写数据,请会把响应数据返回给浏览器。

之后,我们还需要编写代码还让web服务器可以工作,也就是可以处理用户请求。Go语言通过http.HandleFunc()函数来完成此项工作。这个函数有两个参数,第一个是用户请求的地址,第二个是对应请求地址的处理函数名。其中请求地址是相对地址,例如web的根地址为”/”,如果使用本面开启服务器,则对应的url就是”http://localhost”等。处理函数一般包含对于用户请求的响应,可以通过fmt.Fprintf()函数或者 io.Writestring()函数来实现。

现在创建一个simplewebserver.go文件,用于编写简单web服务器代码,完整代码如下所示:

package main

import (

"net/http"

"fmt"

"log"

)

func HelloServer(w http.ResponseWriter, req *http.Request){

fmt.Println("Inside HelloServer handler")

fmt.Fprint(w,"Hello: "+ req.URL.Path[1:])

}

func main() {

http.HandleFunc("/",HelloServer)

err := http.ListenAndServe("localhost:8080",nil)

if err != nil{

log.Fatal("ListenAndServe: ",err.Error())

}

}

最后,可以通过浏览器访问”http://localhost:8080/daehub”和”http://localhost:8080/daehub”,可以看到,服务器对于不同url的请求,会给出不同的响应内容:

至此,一个可响应不同url请求的Go语言简单web服务器就完成了,可以明显感觉到用Go语言实开发web服务器是多么简单和方便,代码又简洁而优雅。

go语言服务器代码,Go语言开发简单web服务器相关推荐

  1. J2EE(一)——开发简单WEB服务器

    一.web开发介绍 网页连接过程(B/S):客户端使用浏览器,发送http请求到web服务器上,服务器进行回应.Browser/Server http请求内容: GET/HTTP/1.1 说明是get ...

  2. android 杀 服务器,android busybox httpd搭建简单web服务器

    安卓手机利用busybox中的httpd命令可以创建一个简单的web服务器. 我们可以在终端模拟器中输入一下命令查看httpd的使用帮助. busybox httpd --help 1|u0_a84@ ...

  3. JAVA个go哪个写web方便_Go语言实现的一个简单Web服务器

    Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务.同时使用这个包能很简单地对Web的路由,静态文件,模版 ...

  4. 简单web服务器学习总结

    用node.js实现简单的web服务器 http://www.cnblogs.com/loogn/p/3362475.html http模块已提供了基本功能,所以我主要解决两个问题,1是静态资源的处理 ...

  5. nodejs php web,nodejs实现的简单web服务器功能示例

    本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 ...

  6. SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载

    转载自   SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载 基本准备工作 1.安装JDK1.6以上版本,安装与配置 2.下载mybatis-3.2.0版:htt ...

  7. Poco:创建个非常简单web服务器

    C++ Poco创建个非常简单web服务器,需要先安装Poco库,配置好Poco头文件和库的路径,window和Linux下都可以编译运行,运行后在浏览器上输入网址:http://127.0.0.1: ...

  8. Socket网络编程--简单Web服务器(6)

    本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...

  9. 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器

    理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...

最新文章

  1. 利用RMAN检测数据库坏块的脚本
  2. 从MSSQL添加对Oracle的链接服务器的存储过程
  3. oracle 动态sql列转行_SQL优化笔记分享:34条实用经验可别错过!
  4. linux 特定用户ssh,linux - 如何在登录后将SSH用户限制为一组预定义的命令?
  5. “DropDownList1”有一个无效 SelectedIndex,因为它不在项目列表中。
  6. flash builder java_Flash Builder4.5 + BladeDS + Java 集成实例
  7. 波动率模型:现货、期货及期货期权
  8. ELK日志系统设计方案-Log4j日志直推Kafka
  9. 智能家居(2)智能体验与智能交互
  10. 快递是否签收,分享小技巧查询物流查看已签收件
  11. 离散数学 课时四 谓词逻辑基本概念
  12. 02- ElasticSearch(简称ES)- 文档批量操作
  13. 决策树算法学习笔记(三)-预测隐形眼镜类型
  14. ripv2ospf路由重发布
  15. 怎么样才能做好非标自动化设备的设计?|| 技巧总结
  16. 运算放大器工作原理是什么?
  17. 中软培训-实现分页功能
  18. python微博批量快速删文章,关注
  19. Day03_css选择器、css样式大全、引入css样式表、常用标签属性、形变和动画
  20. java使用redis缓存对象

热门文章

  1. Android 卡顿原因
  2. 999.1 学习方法
  3. mysql 日志刷新到磁盘_MySQL数据库刷日志的方法
  4. 电脑加了内存条后,C盘空间突然被占用的解决办法!!!
  5. 参加Matlab与AI讲座:使用深度强化学习训练走路机器人观后感
  6. 战团服务器文件,战团导入导出修改文件
  7. 商用计算机的选购配置单,装机选购指南 教你如何制作合理配置单
  8. 传奇补丁安装详细图文教程
  9. 网易云音乐年度总结报告到底准不准?
  10. i5 10600kf和R5 3600X哪个好