Go简单聊天
用Go简单实现网络通信
其余功能可以在这个模型上继续加,比如增加通信人数,实现聊天
server 端
package main import (
"fmt"
"log"
"net"
"os"
) func broadcaster() { //功能代完善 } func handleCoon(conn net.Conn) {
msg := ""
for {
data := make([]byte,)
msg_read,err := conn.Read(data)
if msg_read == { //也可以写成 if(msg_read == 0 || err != nil) { }
continue
}else if err != nil {
fmt.Fprintf(os.Stdout,"readmsg err = %v",err)
continue
} msg_read_str := string(data[:msg_read])
if msg_read_str == "quit" {
conn.Write([]byte("Exit..."))
break
} fmt.Println("client msg = ",msg_read_str) fmt.Printf("send to client : ")
fmt.Scan(&msg) conn.Write([]byte(msg))
} fmt.Println("client close")
conn.Close()
} func main() { lis,err := net.Listen("tcp","127.0.0.1:8888")
if err != nil {
log.Fatal(err)
} defer lis.Close()
fmt.Println(lis)
go broadcaster() for {
conn,err := lis.Accept()
if err != nil {
fmt.Fprintf(os.Stdout,"err = %v",err)
continue
} defer conn.Close() go handleCoon(conn)
} client 端
package main import (
"fmt"
"net"
"os"
) func main() { conn,err := net.Dial("tcp","127.0.0.1:8888")
if err != nil {
fmt.Fprintf(os.Stdout,"err = %v",err)
} defer conn.Close() fmt.Println("connect server sucess") var msg string for {
msg = ""
fmt.Printf("send msg : ")
fmt.Scan(&msg) conn.Write([]byte(msg)) data := make([]byte,)
msg_read,err := conn.Read(data)
if msg_read == { //和上面一样
fmt.Println("to short for msg")
continue
}else if err != nil {
fmt.Fprintf(os.Stdout,"err = %v",err)
continue
} msg_read_str := string(data[:msg_read]) if msg_read_str == "quit" {
fmt.Println("server close.....")
break
}
fmt.Println("to you msg = ",msg_read_str)
}
}

Go简单聊天的更多相关文章
- AngularJS作出简单聊天机器人
简单聊天机器人 很初级的对话框形式.以前做对话框使用js,今天尝试使用AngularJS做出来 这里直接使用自己写的JSON数据. <!DOCTYPE html> <html lan ...
- iOS中XMPP简单聊天实现 好友和聊天
版权声明本文由陈怀哲首发自简书:http://www.jianshu.com/users/9f2e536b78fd/latest_articles;微信公众号:陈怀哲(chenhuaizhe2016) ...
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...
- Python Socket 简单聊天室2
上篇文章写了一个简单的单线程的一问一答的简单聊天室.这次我们使用SocketServer模块搭建一个多线程异步的聊天室. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- Asp.Net SignalR - 简单聊天室实现
简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室.创建聊天室.发送消息,下面就说说我是如何通过Group做出来的 ...
- SpringBoot 搭建简单聊天室
SpringBoot 搭建简单聊天室(queue 点对点) 1.引用 SpringBoot 搭建 WebSocket 链接 https://www.cnblogs.com/yi1036943655/p ...
- ASP.NET SingalR + MongoDB 实现简单聊天室(一):搭建基本框架
ASP.NET SingalR不多介绍.让我介绍不如看官网,我这里就是直接上源代码,当然代码还是写的比较简单的,考虑的也少,希望各位技友多多提意见. 先简单介绍聊天室功能: 用户加入聊天室,自动给用户 ...
- 利用socket.io+nodejs打造简单聊天室
代码地址如下:http://www.demodashi.com/demo/11579.html 界面展示: 首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片. ws说明: ...
- Java continue break 制作简单聊天室程序,屏蔽不文明语言,显示每句话聊天时间 for(;;) SimpleDateFormat("yyyy-MM-dd hh:mm:ss") equalsIgnoreCase
package com.swift; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanne ...
- C#实例之简单聊天室(状态管理)
前言 状态管理是在同一页或不同页的多个请求发生时,维护状态和页信息的过程.因为Web应用程序的通信协议使用了无状态的HTTP协议,所以当客户端请求页面时,ASP.NET服务器端都会重新生 ...
随机推荐
- ABAP很厉害是怎么一种体验?
知乎上偶然看到这个问题,觉得很有意思,我也来回答一发. 我本科和研究生学的是计算机专业,做项目用C/C++,研究生三年项目的代码量大概在三到四万行左右.2007年大学毕业加入SAP成都研究院一直工作到 ...
- SQLServer------遍历操作,游标的基础使用
以下代码 begin declare @tempId int--当前被选中的订单id declare order_cursor cursor for (to.id FROM tb_order AS t ...
- Hive学习之路 (二)Hive安装
Hive的下载 下载地址http://mirrors.hust.edu.cn/apache/ 选择合适的Hive版本进行下载,进到stable-2文件夹可以看到稳定的2.x的版本是2.3.3 Hive ...
- 【Java123】JDBC数据库连接池建立
需求场景:多SQL任务多线程并行执行 解决方案:建立JDBC数据库连接池,将线程与连接一对一绑定 https://www.cnblogs.com/panxuejun/p/5920845.html ht ...
- ubuntu16.04常见的问题解决方案
问题一:关于咖啡主机和其他服务器厂商和个人虚拟机VM10安装ubuntu16.04 ubuntu16.04默认是没有root用户的,要想有必须要通过用户创建,通常安装ubuntu16.04会有个让你创 ...
- locust
from locust import HttpLocust,TaskSet,task class UserVue(TaskSet): #tasks = {buy:1,consume:2} #设置权重 ...
- Kafka设计解析(十)Kafka如何创建topic
转载自 huxihx,原文链接 Kafka如何创建topic? 目录 一.命令行部分 二.后台逻辑部分 Kafka创建topic命令很简单,一条命令足矣: bin/kafka-topics. --re ...
- Source Insight 创建工程(linux-2.6.22.6内核源码)
1. 软件设置 安装完Source Insight,需要对其进行设置添加对“.S”汇编文件的支持: 2. 新建linux-2.6.22.6工程 1)选择工程存放的路径: 2)下载linux-2.6.2 ...
- python3安装crypto出错,及解决方法
首先我用的python3.5的版本 问题的由来,我想通过python去实现RSA加密算法时,破解某网站的js加密认证,网上说需要安装pycrypto,我就去进行pip安装了 pip install p ...
- 在jupyter中安装R的kernal
网上有安装完anaconda后可以直接使用conda 命令安装R的kernal,本人电脑上已经安装了anaconda和R,因此使用手动安装的方式安装. 安装环境: windows 8.1 企业版 An ...