go语言实现聊天室(代码片段)

author author     2023-01-19     224

关键词:

go语言实现聊天室

聊天室分为服务端和客户端。第一部分为服务端代码,第二部分为客户端代码。

一、服务端代码

//chatroom server
package main

import (
    "fmt"
    "net"
)

//定义函数checkError,用来错误处理
func checkError(err error)  
    if err != nil 
        panic(err)
    


//定义一个函数,专门负责接收信息的协程
func processInfo(conn net.Conn)  
    buf := make([]byte, 1024)
    defer conn.Close()

    for 
        //读取数据
        numOfBytes, err := conn.Read(buf)
        if err != nil 
            break
        

        //如果接收的字节数不为0,说明有消息发过来
        if numOfBytes != 0 
            fmt.Printf("Has received message: %s", string(buf))
        

    


func main()  
    //开启监听
    listen_socket, err := net.Listen("tcp","127.0.0.1:8888")
    checkError(err)
    defer listen_socket.Close()

    fmt.Println("chat room Server is waiting... ")

    //接收连接
    for 
        conn, err := listen_socket.Accept()
        checkError(err)

        //如果有客户端连接,则打开一个协程处理
        go processInfo(conn)

    

执行go build server.go或者go run server.go将会输出:chat room Server is waiting... ,等待客户端连接

二、客户端代码

// chat room client
package main

import (
    "fmt"
    "net"
)

func checkError(err error)  
    if err != nil 
        panic(err)
    


func main()  
    //连接服务端的信息
    conn, err := net.Dial("tcp","127.0.0.1:8888")
    checkError(err)
    defer conn.Close()

    //向服务端发送信息
    conn.Write([]byte("Now connection.success!"))

    fmt.Println("Has sent the message!")

执行go run client.go或者go build client.go将会输出:Has sent the message!
此时客户端已向服务端发送信息:Now connection.success


我们再查看服务端的输出终端,此时服务端输出如下内容,那就表示客户端与服务端通信成功。
chat room Server is waiting...
Has received message: Now connection.success!

go语言实现简单的聊天室(代码片段)

通常聊天室的架构分为服务器端和客户端:服务器端:接受来自于客户端的连接请求并建立连接;所有客户端的连接会放进连接池中,用于广播消息;客户端:连接服务器;向服务器发送消息;接收服务器的广播消息;注意事项... 查看详情

用go语言实现一个简单的聊天机器人(代码片段)

一、介绍目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识。软件环境:Go1.9,Goland2018.1.5。 二、回顾Go语言基本构成要素:标识符、关键字、字面量、分隔符、操作符。它们可以组成各种表达式... 查看详情

go语言系列之并发编程(代码片段)

Go语言中的并发编程并发与并行并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)。并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天)。Go语言的并发通过goroutine实现。goroutine类似于线程,... 查看详情

go简单聊天(代码片段)

用Go简单实现网络通信其余功能可以在这个模型上继续加,比如增加通信人数,实现聊天server端packagemainimport("fmt""log""net""os")funcbroadcaster()//功能代完善funchandleCoon(connnet.Conn)msg:=""fordata:=make([]byte,1024)msg_read,err:=conn.Read(da 查看详情

go语言基础之并发(代码片段)

Go语言中的并发编程——并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因。并发与并行并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)。并... 查看详情

19.go语言基础之并发(代码片段)

...执行多个任务(windows中360在杀毒,同时你也在写代码)Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时(runtime)调度完成,而... 查看详情

编程实践用go语言实现一个sqldsl(代码片段)

文章目录用go语言实现一个SQLDSL一、编写SQLDSL二、使用工厂模式构造SQLDSL三、使用反射实现SQLDSL四、小结用go语言实现一个SQLDSLGo语言是一种广泛使用的编程语言,特别是在Web开发领域。它的优势是高效、简单、易于编写、易于理... 查看详情

go语言net实现smtp(代码片段)

直接上代码:packagemainimport("encoding/base64""fmt""net""time")typeSenderstructUserNamestringPasswordstringFromstringTostringSubjectstringTextstringHoststringfuncNewS 查看详情

go语言实现猜数字游戏(代码片段)

Go和C有很多语法相近,但是也有很大区别,像变量的命名以及很多标准库的引用,这里用Go语言实现了猜数字游戏。packagemainimport( "bufio" "fmt" "math/rand" "os" "strconv" "strings" "ti 查看详情

go语言实现筛选数据(代码片段)

packagemainimport("bufio""fmt""io""os""regexp""strings")funcmain()fileName:="log.log"file,err:=os.OpenFile(fileName,os.O_RDWR,0666)iferr!=nilfmt.Println("Openfileerror!",err)returndeferfile.Close() 查看详情

go语言实现学生管理系统(代码片段)

介绍总结go语言的基础学习,通过两种方式实现简单的学生信息管理系统方法一packagemainimport( "fmt" "os")//定义所有学生信息varstudentDatamap[int]*student//定义学生typestudentstruct idint64 namestring scoreint//初始化分配内存空间f... 查看详情

[go]用go语言实现区块链工作原理(代码片段)

基本原理这里就不写了,只写一个简单demo的实现首先得有一个区块用来存储区块头和区块体typeBlockstructVersionint64PreBlockHash[]byteHash[]byte//区块体内是不存储HASH值的,这是网络中某个节点在计算时存储在息本地的,这里是为了方便... 查看详情

go语言实现简单的学生管理系统(代码片段)

介绍总结go语言的基础学习,通过两种方式实现简单的学生信息管理系统方法一packagemainimport( "fmt" "os")//定义所有学生信息varstudentDatamap[int]*student//定义学生typestudentstruct idint64 namestring scoreint//初始化分配内存空间f... 查看详情

go语言中的闭包(代码片段)

基本概念闭包:函数+该函数使用到的变量共同组成了闭包实现方式通过函数返回函数的方法实现外层函数实现变量控制内层函数实现逻辑控制案例实践 实现代码闭包法packagemainimport( "fmt" "strings")funcmakeSuffix(suf... 查看详情

编程实践用go语言实现hashset(代码片段)

用go语言实现HashSet本文介绍如何使用Go语言来实现一个HashSet,HashSet是一种特殊的数据结构,它具有快速插入、查找及删除元素的能力,它的实现原理是哈希表。为什么要使用HashSetHashSet是一种非常有效的高性能数据结构,它的查... 查看详情

冒泡排序之go语言实现(代码片段)

基本介绍案例分析 思路分析一共需要多少轮排序(数组Size-1) 每一轮中需要多少次比较(数组Size-轮次)数据交换算法(3种):临时变量法、求和法、异或法代码实现packagemainimport"fmt"//冒泡排... 查看详情

go语言学习-接口(代码片段)

Go语言中虽然没有传统面向对象语言中类、集成的概念,不过提供了接口的支持,可以使用接口来使用一些面向对象的特性。在go语言中,的接口有下面几个特点:可以包含0个或多个方法的签名只定义方法的签名,不包含实现实现... 查看详情

使用go语言实现高效的并发编程(代码片段)

...竞态条件使用信道来协调多个goroutine之间交互总结概述Go语言支持并发编程。你可以通过创建多个并发单元(称为goroutines)来实现多线程编程。每个goroutine都是一个独立的执行单元,可以并行执行代码。例如,如... 查看详情