服务端的代码

package main

import (
"fmt"
"net"
) func main () {
fmt.Println("start server...") //Listen来创建服务端
ln, err := net.Listen("tcp", ":10010") if err != nil {
fmt.Println("listen failed, err:", err)
return
} for {
conn, err := ln.Accept()
if err != nil {
fmt.Println("accept failed, err:", err)
continue
} //开启新的gouroutine 去处理请求
//每个请求开启一个goroutine
go process(conn)
}
} func process (conn net.Conn) {
defer conn.Close() for {
buf := make([]byte, 512)
_, err := conn.Read(buf) if err != nil {
fmt.Println("read failed, err:", err)
return
} fmt.Println("read:", string(buf))
}
}

客户端代码:

//客户端程序
package main import (
"fmt"
"os"
"strings"
"bufio"
"net"
) func main () {
conn, err := net.Dial("tcp", "localhost:10010") if err != nil {
fmt.Println("Erroring dialing", err.Error())
return
} defer conn.Close() inputReader := bufio.NewReader(os.Stdin) for{
input, _ := inputReader.ReadString('\n')
trimedinput := strings.Trim(input, "\r\n") if trimedinput == "Q" {
return
} _, err := conn.Write([]byte(trimedinput)) if err != nil {
return
}
}
}

  

  

先编译,然后执行,开启服务端  

  然后新开一个窗口,作为客户端请求

  

go实现简单的tcp编程的更多相关文章

  1. Go语言简单的TCP编程

    前期准备 需要import "net"包 IP类型,其中一个重要的方法是IP.ParseIP(ipaddr string)来判断是否是合法的IP地址 TCP Client func ...

  2. 网络编程----------SOCKET编程实现简单的TCP协议

    首先我们须要大致了解TCP的几点知识: 1.TCP的特点:面向连接的可靠性传输 2.TCP的三次握手建立连接和四次挥手释放连接.但为什么TCP要三次握手建立连接呢? 答:由于两次握手无法保证可靠性.若 ...

  3. TCP编程,Socket通讯

    网络编程分两种,一种是TCP编程,还有一种是UDP编程(点击打开链接).而本文先讲述简单的TCP编程,Socket套接字连接通讯,实现简单的client与server之间的信息传输. 以下是clien ...

  4. C#socket编程之实现一个简单的TCP通信

    TCP(TransmissionControl Protocol)传输控制协议. 是一种可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TC ...

  5. Python之路(第三十一篇) 网络编程:简单的tcp套接字通信、粘包现象

    一.简单的tcp套接字通信 套接字通信的一般流程 服务端 server = socket() #创建服务器套接字 server.bind() #把地址绑定到套接字,网络地址加端口 server.lis ...

  6. Java TCP编程

    Java编写TCP编程--回射信息实例 注:简单的tcp联系,还存在问题,readUTF()为阻塞型,如果之前的用户一直不输入,则一直阻塞,之后的用户再连接会出现问题. import java.io. ...

  7. Mina、Netty、Twisted一起学(一):实现简单的TCP服务器

    MINA.Netty.Twisted为什么放在一起学习?首先,不妨先分别看一下它们官方网站对其的介绍: MINA: Apache MINA is a network application frame ...

  8. [C# 网络编程系列]专题五:TCP编程

    转自:http://www.cnblogs.com/zhili/archive/2012/08/25/2656840.html 前言 前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来 ...

  9. python中的TCP编程学习

    今天看了一下关于python的TCP编程. 发现思路和其他语言(比如java)思路基本上差点儿相同. 先看client.基本过程例如以下: 第一步:创建一个socket 第二步:建立连接 第三步:发送 ...

随机推荐

  1. Macbook上打开多个终端的方法

    方法有如下两种 1.首先是的焦点在终端上(使用鼠标点击下终端).然后使用快捷键command+N 即可得到另一个终端界面. (如果现在光标的焦点在浏览器上,那么就是新打开一个浏览器窗口) 2.同样,光 ...

  2. 如何获取UA?

    代码: function whatBrowser() { document.Browser.Name.value = navigator.appName; document.Browser.Versi ...

  3. Spring Boot项目跳转不到jsp页面是怎么回事

    SpringBoot访问不了JSP但却能进入后台 一直报错: 解决方法: 改成下面的

  4. npm package.json配置整理

    通过npm init 创建 package.json文件 参数: name:项目名字 version: 版本号 description: 项目介绍 main: 项目的入口文件 scripts: npm ...

  5. Time类

    public class Demo_Timer { /** * @param args * 计时器 * @throws InterruptedException */ public static vo ...

  6. 002-poi-excel-导出设置单元格数据校验规则、筛选功能

    一.数据验证概述 推荐以下操作在2007之后操作 1.1.查看excel的数据验证 1.进入 2.设置规则 通过验证条件允许,可以看到是每个单元格默认只成立一种条件 1.2.POI代码开发-数据验证 ...

  7. 24 Flutter官方推荐的状态管理库provider的深入使用、初始化修改状态、父子组件同步状态

    加群452892873 下载对应24课文件,运行方法,建好项目,直接替换lib目录,在往pubspec.yaml添加上一下扩展. cupertino_icons: ^0.1.2 flutter_swi ...

  8. logging日志管理

    日志:记录系统运行时的信息的(调试信息和异常信息) 基本用法: import logging logging.debug("这是一条调试信息") logging.info(&quo ...

  9. k8s常可能问的问题

    k8s常可能问的问题 1.为什么要用k8s 自我修复.pod水平自动伸缩.密钥和配置管理动态对应用进行扩容.缩容 服务发现.负载均衡 1.1.自我修复 比如误删pod后会自动创建,用 kind: Re ...

  10. pycharm调用shell命令

    在pycharm中调用shell命令 1.调用普通命令 # -*- coding:UTF-8 -*- import subprocess subprocess.call(["ls /home ...