【Go语言】简单网络服务器

【昨晚电脑上不了网,今天将Go语言版的网络服务器代码贴上】

package main
import (
"fmt"
"net/http"
)
/**
界面表单
**/
var inputInfo = `

请在下面输入你的信息

`
/**
结构体
server.goserver.goserver.go**/

type User struct {
Name string
Age string
}

//展示界面
func showPage(writer http.ResponseWriter, request *http.Request) {
//fmt.Println(“len”, cap(userList)) 测试长度
request.ParseForm() //获取表单
fmt.Fprint(writer, inputInfo) //在网页上打印表格
processRequest(request) //调用执行方法
//fmt.Fprint(writer, userList)
//打印输入的值
for _, v := range userList {
if v.Name != “” {
fmt.Fprintln(writer, “姓名”, v.Name, “年龄”, v.Age, “
“)
}

}
}

func getUser(writer http.ResponseWriter, request *http.Request) {
if len(userList) == 0 {
fmt.Fprintf(writer, “哦哦,这里还没有数据”)
} else {
if getCount < len(userList) {

if userList[getCount].Name == “” {

fmt.Fprintf(writer, “%s”, userList[getCount].Name+”:”+userList[getCount].Age)
getCount = 0
fmt.Printf(“当前取得了第%d个值\n”, getCount)
} else {

fmt.Fprintf(writer, “%s”, userList[getCount].Name+”:”+userList[getCount].Age)
fmt.Printf(“*******当前取得的值下标是%d\n”, getCount)
getCount++

fmt.Printf(“&&&&&&&&&&&&当前取得了第%d个值”, getCount)

}
} else {
getCount = getCount % len(userList)
}
}
}

var userList = []User{} //userlist
var count = 0 //计数器1,insert元素的个数
var getCount = 0 //计数器2,get元素的个数

//执行请求的函数
func processRequest(request *http.Request) {
fmt.Println(request.Form) //打印Form ,这是一个map,类似于GET[]和POST[]
fmt.Println(request.URL) //打印URL,测试路由
fmt.Println(request.Method) //依据method做判断,如果是post就做处理,get就不处理
if request.Method == “POST” {
fmt.Println(request.Form["name"]) //测试是否获取到参数
fmt.Println(request.Form["age"])
//fmt.Printf(“%s******************\n”, request.Form["age"])
var user User
user.Name = request.Form["name"][0] //将获取到的参数保存
user.Age = request.Form["age"][0]
fmt.Println(user)
//每一次请求都加入userlist
for i := 0; i < len(userList); i++ { if count > len(userList) {
break
}
if userList[i].Name == “” {

userList[i] = user
fmt.Println(count)
count++
break
}
}
userList = append(userList, user) //每次在后面追加一个元素
//userList[]

fmt.Println(userList)
}
}

//主函数
func main() {
http.HandleFunc(“/insert”, showPage) //第一个路由地址,192.168.153.1:9999/insert
http.HandleFunc(“/get”, getUser) //第二个路由地址,192.168.153.1:9999/get
http.ListenAndServe(“192.168.153.1:9999“, nil) //启动服务器,主机和端口
}

************************使用方式************************************************************
不要在这个页面上输入啊啊啊啊啊啊啊啊啊啊!
有两个网页组成。
在电脑上安装Go环境以后,新建一个go文档 ,复制所有代码,main函数的地方修改ip和端口,运行go程序,在浏览器输入 【ip+端口/insert】可以访问到输入界面,访问【ip+端口/get】可以访问到结果界面
在输入界面填入值提交以后可以从结果界面取到插入的值。

**********************************************************************************************
刘凯宁@C2P
2014年7月9日
ps:德国狂胜巴西,7比1啊,太给力了!

Share

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>