Go語言實現定向聊天,最簡單的

2021-07-03 07:50:28 字數 2479 閱讀 6848

服務端:message_server.go

package main

import (

"container/list"

"encoding/json"

"fmt"

json "go-json" //go-******json

"net"

"sync"

"time"

)type client_message struct

type all_message struct

type message struct

var ip_port string = ":5555"

var message_map map[int]all_message = make(map[int]all_message)

func main()

}func connection(con net.conn)

if n == 0

mes, err := json.newjson(buf[:n])

if err != nil else

c_message := convert_json(mes)

switch

num := len(list)

con.write(byte(fmt.sprint(num)))

n, e := con.read(buf)

checkerror("get", e)

if string(buf[:n]) == "get_len_ok" else }}

} }}func put_message(c_message client_message)

if message_map[c_message.receiver].list == nil

} m := message_map[c_message.receiver]

m.lock.lock()

m.list.pushfront(string)

m.lock.unlock()

}func get_message(num int) byte

l := message_map[num]

l.lock.lock()

x := l.list.len()

for i := 0; i < x; i++

l.lock.unlock()

return message_list

}func checkerror(pos string, e error)

}func convert_json(mes *json.json) client_message

return m

}

客戶端:send_message.go

客戶端我分為兩個小部分,乙個是專門自動接收的,乙個是用的發訊息的,我想兩者同事進行,但不在gui下面輸入輸出我不知道怎麼解決,所以就搞成兩部分.

package main

import (

//"encoding/json"

"fmt"

json "go-json"

"net"

"strconv"

t "time"

)type client_message struct

type message struct

var sender int = 123456789

var receiver int = 1597805565 //qq

func main()

/* 這個登出部分是用來傳送訊息的,編譯的時候要登出掉這面乙個for迴圈.

for

} */

for

t.sleep(3e9) }}

func send_message(con net.conn, str string) byte `, sender, receiver, "put", str))

if 0 < len(mes) && len(mes) <= 2048 else

}func get_message(con net.conn) error `, sender, receiver, "get", ""))

_, e := con.write(mes)

if e != nil

s := string(checkresponse(con))

if s == "ok"

} }return nil

}func checkresponse(con net.conn) byte

return buf[:n]

}

客戶端截圖:

服務端截圖:

go語言實現聊天伺服器 多人聊天)

用go語言實現乙個server作中轉 訊息,多個客戶端聊天 1 伺服器開啟,等待來自客戶端的連線,把每乙個客戶端儲存在map中 2 客戶端連線伺服器,給自己取乙個別名,儲存在伺服器 4 客戶端發訊息,伺服器解析協議,給每乙個客戶端 5 客戶端下線 server server project main...

最簡單的C語言實現大數相乘

前言 實現大數相乘比相加要難一點 但是仔細分析會發現很多共同之處 分析 1.由數學歸納法會發現用一般的兩數相乘方法計算 每計算一次都能夠確定最終結果的一位數字 2.比如說 456 123 下面我用草稿描述 字醜請見諒 3.第一步我們可以確定個位 第二步可以確定十位 第三步是百位 以此類推 第n步由n...

GO語言實現簡單的目錄複製功能

建立乙個獨立的 goroutine 遍歷檔案,主程序負責寫入資料。程式會複製空目錄,也可以設定只複製以 xx 結尾的檔案。嚴格來說這不是複製檔案,而是寫入新檔案。因為這個程式是建立新檔案,然後寫入複製資料的。我們一般的 copy 命令是不會修改檔案的 ctime change time 狀態的。如下...