嗨,我试图在golang中学习一些套接字编程,我正在跟随本教程
http://synflood.at/tmp/golang-slides/mrmcd2012.html#1
以下是本教程在一页上的最终结果. https://github.com/akrennmair/telnet-chat/blob/master/03_chat/chat.go
我很困惑如何编写这个程序的客户端,我创建一个连接并拨入服务器运行的同一个端口/ IP但从那里我不知道.我有新创建的连接的read()和write()函数,但不知道在哪里划分读取或任何东西.考虑到文本输入是在服务器中进行的,我想我只需要读一些东西吗?
package main
import (
"bufio"
"fmt"
"net"
"os"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:6000")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for {
fmt.Println(bufio.NewReader(conn).ReadString([]byte("\n")))
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将包含许多结构的切片发送到html模板.
我有一个'post'结构
type Post struct {
threadID int
subject string
name string
text string
date_posted string
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个类型的切片Post(posts := []Post{})
然后使用我的数据库中的行填充此切片,然后在我的模板上执行.
defer latest_threads.Close()
for latest_threads.Next(){
var threadID int
var subject string
var name string
var text string
var date_posted string
latest_threads.Scan(&threadID, &subject, &name, &text, &date_posted)
post := Post{
threadID,
subject,
name,
text,
date_posted,
}
posts = append(posts, post)
}
t, error := template.ParseFiles("thread.html")
if error != nil{
log.Fatal(error)
}
t.Execute(w, posts)
}
Run Code Online (Sandbox Code Playgroud)
程序编译/运行正常,但是从模板中查看html输出时
{{.}}
{{range .}} …Run Code Online (Sandbox Code Playgroud) <!DOCTYPE html>
<html>
<head>
<title> Test </title>
</head>
<body>
<div>
<h2>Reply</h2>
<form action="/post/{{$threadID}}" method="POST">
<input type="text" name="subject" />
<input type="text" name="name" value="Anonymous" />
<input type="text" name="message" />
<input type="submit" value="submit" />
</form>
</div>
<div>
{{range .}}
{{$threadID := .ThreadID}}
<h3>{{.Subject}}</h3>
<h3>{{.Name}}</h3>
<div>{{.DatePosted}}</div>
<div><p>{{.Text}}</p></div>
<br /><br />
{{end}}
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我有这个模板,在页面顶部有一个表单需要发送任何一个帖子的threadID(它们都是相同的,所有帖子都有一定的threadID),这显然不是工作,我唯一的另一个想法就是这样
{{range .}}
{{if $threadID == nil}}
$threadID := .ThreadID
//build the form same as above
{{end}}
<h3>{{.Subject}}</h3>
<h3>{{.Name}}</h3>
<div>{{.DatePosted}}</div>
<div><p>{{.Text}}</p></div>
<br /><br />
{{end}}
Run Code Online (Sandbox Code Playgroud)
如果上述任何一个不清楚,这是Post结构和方法.
type Post struct {
threadID …Run Code Online (Sandbox Code Playgroud)