当前位置: 首页 > wzjs >正文

手机号码定位网站开发html好看的网站

手机号码定位网站开发,html好看的网站,百度网盘做自已网站,网页素材提取Go Web (1) 一、网络通信与 Socket 编程 (一)Socket 编程基础 Socket 是网络通信的核心,它允许程序之间通过网络进行数据交换。在 Go 中,可以使用标准库 net 来实现 Socket 编程。 (二&…

Go Web (1)

一、网络通信与 Socket 编程

(一)Socket 编程基础

Socket 是网络通信的核心,它允许程序之间通过网络进行数据交换。在 Go 中,可以使用标准库 net 来实现 Socket 编程。

(二)Socket 服务端与客户端示例

  1. 服务端代码
package mainimport (
"net"
"log"
)func handleConnection(conn net.Conn) {
defer conn.Close()
for {
buf := make([]byte, 1024)
n, err := conn.Read(buf)
if err != nil {
log.Println("Error reading:", err.Error())
return
}
data := buf[:n]
log.Printf("Received: %s", data)
reply := "Server received your message: " + string(data)
conn.Write([]byte(reply))
}
}func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
log.Fatal("Error starting server:", err)
}
defer listener.Close()
log.Println("Server listening on :8080")for {
conn, err := listener.Accept()
if err != nil {
log.Println("Error accepting connection:", err.Error())
continue
}
go handleConnection(conn)
}
}
  1. 客户端代码
package mainimport (
"net"
"log"
)func main() {
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
log.Fatal("Error connecting:", err)
}
defer conn.Close()
log.Println("Connected to server")message := "Hello from client!"
_, err = conn.Write([]byte(message))
if err != nil {
log.Fatal("Error sending message:", err)
}buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
log.Fatal("Error reading response:", err)
}
log.Printf("Server response: %s", buffer[:n])
}

(三)点对点通信

点对点通信是两个网络节点之间的直接通信。通过 Socket 编程,可以实现设备之间的点对点消息传递,常用于即时通讯等场景。

二、MySQL 数据库操作

(一)配置数据库

  1. 安装 MySQL :在本地或服务器上安装 MySQL 数据库,并创建数据库和表。
  2. Go 中连接 MySQL :使用 database/sql 包和 mysql 驱动来连接 MySQL。
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)func main() {
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname")
if err != nil {
panic(err.Error())
}
defer db.Close()err = db.Ping()
if err != nil {
panic(err.Error())
}
fmt.Println("Connected to database successfully!")
}

(二)数据库增删改查操作

  1. 插入数据
func insertData(db *sql.DB) {
sqlStatement := `INSERT INTO users (name, email) VALUES (?, ?)`
_, err := db.Exec(sqlStatement, "John Doe", "john@example.com")
if err != nil {
panic(err.Error())
}
}
  1. 查询数据
func queryData(db *sql.DB) {
rows, err := db.Query("SELECT id, name, email FROM users")
if err != nil {
panic(err.Error())
}
defer rows.Close()for rows.Next() {
var id int
var name, email string
err := rows.Scan(&id, &name, &email)
if err != nil {
panic(err.Error())
}
fmt.Printf("ID: %d, Name: %s, Email: %s\n", id, name, email)
}
}
  1. 更新数据
func updateData(db *sql.DB) {
sqlStatement := `UPDATE users SET email = ? WHERE id = ?`
_, err := db.Exec(sqlStatement, "newemail@example.com", 1)
if err != nil {
panic(err.Error())
}
}
  1. 删除数据
func deleteData(db *sql.DB) {
sqlStatement := `DELETE FROM users WHERE id = ?`
_, err := db.Exec(sqlStatement, 1)
if err != nil {
panic(err.Error())
}
}

三、Go Web 开发实例

(一)单控制器实例

package mainimport (
"net/http"
"fmt"
)func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}

(二)多控制器实例

package mainimport (
"net/http"
"fmt"
)func homeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Home Page")
}func aboutHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "About Page")
}func main() {
http.HandleFunc("/", homeHandler)
http.HandleFunc("/about", aboutHandler)
http.ListenAndServe(":8080", nil)
}

四、获取请求头和请求参数

(一)获取请求头

package mainimport (
"net/http"
"fmt"
)func headerHandler(w http.ResponseWriter, r *http.Request) {
headers := r.Header
fmt.Fprintf(w, "Request Headers:\n")
for key, value := range headers {
fmt.Fprintf(w, "%s: %s\n", key, value)
}
}func main() {
http.HandleFunc("/headers", headerHandler)
http.ListenAndServe(":8080", nil)
}

(二)获取请求参数

package mainimport (
"net/http"
"fmt"
)func paramsHandler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
age := r.URL.Query().Get("age")
fmt.Fprintf(w, "Name: %s, Age: %s", name, age)
}func main() {
http.HandleFunc("/params", paramsHandler)
http.ListenAndServe(":8080", nil)
}

五、Cookie 操作

(一)设置 Cookie

package mainimport (
"net/http"
"fmt"
)func setCookieHandler(w http.ResponseWriter, r *http.Request) {
cookie := http.Cookie{Name: "username", Value: "john_doe", Path: "/"}
http.SetCookie(w, &cookie)
fmt.Fprintf(w, "Cookie set")
}func main() {
http.HandleFunc("/setcookie", setCookieHandler)
http.ListenAndServe(":8080", nil)
}

(二)获取 Cookie

package mainimport (
"net/http"
"fmt"
)func getCookieHandler(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("username")
if err != nil {
fmt.Fprintf(w, "Cookie not found")
return
}
fmt.Fprintf(w, "Cookie value: %s", cookie.Value)
}func main() {
http.HandleFunc("/getcookie", getCookieHandler)
http.ListenAndServe(":8080", nil)
}

六、Restful

使用 Go 框架构建 Restful API

以 Go 的 net/http 包为例,构建一个简单的用户管理 Restful API。

package mainimport (
"net/http"
"fmt"
"encoding/json"
"strconv"
)type User struct {
ID   int    `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}var users = []User{
{ID: 1, Name: "John Doe", Email: "john@example.com"},
{ID: 2, Name: "Jane Smith", Email: "jane@example.com"},
}func getUsers(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(users)
}func getUser(w http.ResponseWriter, r *http.Request) {
idStr := r.URL.Query().Get("id")
id, err := strconv.Atoi(idStr)
if err != nil {
http.Error(w, "Invalid ID", http.StatusBadRequest)
return
}for _, user := range users {
if user.ID == id {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(user)
return
}
}
http.Error(w, "User not found", http.StatusNotFound)
}func createUser(w http.ResponseWriter, r *http.Request) {
var newUser User
err := json.NewDecoder(r.Body).Decode(&newUser)
if err != nil {
http.Error(w, "Invalid request body", http.StatusBadRequest)
return
}users = append(users, newUser)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(newUser)
}func updateUser(w http.ResponseWriter, r *http.Request) {
idStr := r.URL.Query().Get("id")
id, err := strconv.Atoi(idStr)
if err != nil {
http.Error(w, "Invalid ID", http.StatusBadRequest)
return
}for i, user := range users {
if user.ID == id {
var updatedUser User
err := json.NewDecoder(r.Body).Decode(&updatedUser)
if err != nil {
http.Error(w, "Invalid request body", http.StatusBadRequest)
return
}
users[i] = updatedUser
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(updatedUser)
return
}
}
http.Error(w, "User not found", http.StatusNotFound)
}func deleteUser(w http.ResponseWriter, r *http.Request) {
idStr := r.URL.Query().Get("id")
id, err := strconv.Atoi(idStr)
if err != nil {
http.Error(w, "Invalid ID", http.StatusBadRequest)
return
}for i, user := range users {if user.ID == id {users = append(users[:i], users[i+1:]...)fmt.Fprintf(w, "User deleted successfully")return}}http.Error(w, "User not found", http.StatusNotFound)
}func main() {http.HandleFunc("/users", getUsers)http.HandleFunc("/user", getUser)http.HandleFunc("/createuser", createUser)http.HandleFunc("/updateuser", updateUser)http.HandleFunc("/deleteuser", deleteUser)http.ListenAndServe(":8080", nil)
}

文章转载自:

http://nZEcIKpv.tfqfm.cn
http://f3DSOnNO.tfqfm.cn
http://WFYf1E7g.tfqfm.cn
http://Mj3z8Dw9.tfqfm.cn
http://3Xi6zvta.tfqfm.cn
http://SNmzT0kT.tfqfm.cn
http://dLCwuVbb.tfqfm.cn
http://vNPbNhTD.tfqfm.cn
http://p85nORt6.tfqfm.cn
http://NXQKKZB6.tfqfm.cn
http://ZXw1chqd.tfqfm.cn
http://vrNEb2VP.tfqfm.cn
http://M0aiWmcp.tfqfm.cn
http://2VtBx4rh.tfqfm.cn
http://F3zsCiSJ.tfqfm.cn
http://lUW6dM7R.tfqfm.cn
http://lZw0KpXU.tfqfm.cn
http://A82cEOw2.tfqfm.cn
http://pGDxqpw5.tfqfm.cn
http://j6ztHZLW.tfqfm.cn
http://Igkb9h2U.tfqfm.cn
http://ydiFmsIP.tfqfm.cn
http://uTu4HSGC.tfqfm.cn
http://bqxnqM7a.tfqfm.cn
http://GySBIhGf.tfqfm.cn
http://qaVFWMAh.tfqfm.cn
http://5hDF19l4.tfqfm.cn
http://Awm6ueo4.tfqfm.cn
http://1CLn4Q3q.tfqfm.cn
http://EIv9MsOb.tfqfm.cn
http://www.dtcms.com/wzjs/670837.html

相关文章:

  • 网站维护怎么样广州腾虎网络科技有限公司
  • 建设网站前的市场分析主要包括哪些内容网站导入链接
  • 互联网网站如何做流量统计浏览器免费下载
  • 用asp做网站需要什么软件dedecms 漏洞
  • 南宁网站建设方案报价怎么用自助网站
  • 摄影网站功能设计联盟网站做任务
  • 公司网站放哪些内容江西省最新新闻
  • 宁波高端网站建设联系方式重庆网站建设 cqhtwl
  • 搜索引擎优化包括( )方面的优化seo优化推广多少钱
  • 做网站总结与体会买电脑wordpress
  • 哪个网站可以做公众号封面php mysql开发的网站
  • 湖州长兴建设局网站网站建设如何切图
  • 天津网站建设座机号WordPress怎么添加模板
  • 建一个公司网站花多少钱12366纳税服务平台
  • 网站建设目标的管理可行性wordpress 概要
  • 怎么做微帮网站免费手游推广代理平台渠道
  • 桥头做网站预约网页怎么制作
  • 引物在线设计网站wordpress如何修改网站域名
  • 网站域名注册步骤大连网站建设怎么样
  • 上海松江做网站公司用seo对网站做分析
  • 站长工具最近查询中企动力科技股份
  • 北京网站备案拍照地址鼓楼网站开发与设计培训
  • 任丘网站制作中国建筑网官网查证
  • 长春网站建设网诚传媒做网站需要公司资料吗
  • 芜湖市网站建设一个网站做多少关键词
  • 做网站和服务器的大小有关吗wordpress istax
  • 上海网站建设设计百度服务中心官网
  • 软件介绍网站源码网站开发api和微端
  • 注册域名后网站建设留学网站建设文案
  • 图文网站模版html5 网站 优势