server端:

package main

import (
"fmt"
"net"
) func main() {
//建立监听
listener, err := net.Listen("tcp", "localhost:8080")
if err != nil{
fmt.Println("建立tcp监听失败,err=",err)
return
} defer func() {
listener.Close()
fmt.Println("服务器已关闭")
}() fmt.Println("正在监听客户请求") for {
//循环接入一个客户端(获得专线连接Conn)
conn, _ := listener.Accept()
fmt.Println("成功接入客户端:",conn.RemoteAddr()) //将接入的客户端丢到并发协程中进行处理
go func() {
/*在一个独立的并发任务中与当前客户端IO*/
for {
//在专线连接中与特定的客户端IO
buffer := make([]byte, 1024)
n, _ := conn.Read(buffer)
msg := string(buffer[:n])
fmt.Printf("客户端%v:%s\n",conn.RemoteAddr(),msg) //回复消息
conn.Write([]byte("已阅消息:"+ msg)) //判断客户端是否想离婚
if msg == "exit"{
//断开与客户端的链接
conn.Close()
break
} }
}()
} }

  client端:

package main

import (
"fmt"
"net"
) func main() {
//使用udp协议拨号,远程地址127.0.0.1:8080
conn, _ := net.Dial("tcp", "127.0.0.1:8080") //程序退出前关闭连接,释放io资源
defer func() {
conn.Close()
fmt.Println("客户端已退出")
}() //创建接收消息的缓冲区
buffer := make([]byte, 1024)
//用户要发送的消息文本
var userInput string
for{
//接收用户输入
fmt.Print("大神请输入:")
fmt.Scan(&userInput)
//如果用户输入exit则退出 //客户端发起交谈
conn.Write([]byte(userInput)) //接收服务端消息
n, err := conn.Read(buffer)
fmt.Println(err)
fmt.Println("服务端:"+string(buffer[:n]))
if userInput == "exit"{
break
}
}
}

  

Go语言网络通信---多用户连续通信的TCP编程的更多相关文章

  1. Go语言网络通信---连续通信的UDP编程

    Server: package main import ( "fmt" "net" ) func main() { //创建udp地址 udpAddr, _ : ...

  2. Go语言学习之9 网络协议TCP、Redis与聊天室

    主要内容 1. Tcp编程2. redis使用 1. Tcp编程 (1)简介       Golang是谷歌设计开发的语言,在Golang的设计之初就把高并发的性能作为Golang的主要特性之一,也是 ...

  3. 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP

    [源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...

  4. 36 - 网络编程-TCP编程

    目录 1 概述 2 TCP/IP协议基础 3 TCP编程 3.1 通信流程 3.2 构建服务端 3.3 构建客户端 3.4 常用方法 3.4.1 makefile方法 3.5 socket交互 3.4 ...

  5. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  6. C#网络程序设计(3)网络传输编程之TCP编程

        网络传输编程指基于各种网络协议进行编程,包括TCP编程,UDP编程,P2P编程.本节介绍TCP编程.     (1)TCP简介: TCP是TCP/IP体系中最重要的传输层协议,它提供全双工和可 ...

  7. 【Socket编程】通过Socket实现TCP编程

    通过Socket实现TCP编程 Socket通信 : 1.TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 2.基于TCP协议实现网络通信的类: 客户端----Socket类 服务器 ...

  8. 网络编程之TCP编程

    网络编程之TCP编程 前面已经介绍过关于TCP协议的东西,这里不做赘述.Java对于基于TCP协议的网络通信提供了良好的封装,Java使用socket对象来代表两端的通信窗口,并通过Socket产生I ...

  9. [Python] 网络编程之TCP编程

    转自:TCP编程 - 廖雪峰的官方网站 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协 ...

随机推荐

  1. 06- web兼容性测试与web兼容性测试工具

    web兼容性概述 定义:软件兼容性测试是指检查软件之间能否正确地进行交互和共享信息.随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越来越重 ...

  2. node运行的第一个helloWorld程序

    hello world 参考链接: https://www.runoob.com/nodejs/nodejs-http-server.html https://npm.taobao.org/ http ...

  3. Mysql 8.0安装

    1. 下载安装包至/usr/local目录下 下载地址:https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.16-el7-x86_64.tar.gz ...

  4. Android进程so注入Hook java方法

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/53769331 Andorid的Hook方式比较多,现在来学习下,基于Android ...

  5. hdu4685 最大匹配可能性

    题意:       给你n个王子和m个公主,每个王子可以和自己喜欢的公主结婚,问你在不影响最大匹配的前提下每个王子都可以去哪些公主. 思路:       所有王子向他喜欢的公主连一条边,然后匹配一遍, ...

  6. Linux下的用户、组和权限

    目录 一:用户和组信息的查看 查看用户信息 查看密码信息 查看组信息 特殊组wheel 二:用户和组信息的管理 用户管理 组管理 三:文件权限 文件权限的查看 文件权限的修改 ACL控制权限 setf ...

  7. Linux中的DHCP服务

    目录 DHCP DHCP的报文类型 DHCP的部署 DHCP中继(DHCP代理) DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局 ...

  8. (一)安装mysql

    数据库 数据库的相关概念 DB:数据库(database):存储数据的"仓库".它保存了一系列有组织的数据. DBMS:数据库管理系统(Database Management Sy ...

  9. SQL必学必会笔记 —— 基础篇

    基础篇 SQL语言按照功能划分 DDL(DataDefinitionLanguage),也就是数据定义语言,它用来定义我们的数据库对象,包括 数据库.数据表和列.通过使用DDL,可以创建,删除和修改数 ...

  10. Java对象内存分布

    [deerhang] 创建对象的四种方式:new关键字.反射.Object.clone().unsafe方法 new和反射是通过调用构造器创建对象的,创建对象的时候使用invokespecial指令 ...