go http 客户端

 1 package main
 2 import (
 3     "net/http"
 4     "time"
 5     "math/rand"
 6     "io/ioutil"
 7     "net/url"
 8     "strings"
 9     "fmt"
10 )
11 func randString() string {
12     var s []byte
13     for l:= rand.Uint32()%10+1; l>0 ;l-- {
14         s = append(s,uint8(rand.Uint32()%26+‘a‘));
15     }
16     //println("rand",string(s))
17     return string(s)
18 }
19 var ch chan int
20 func post(id int) {
21     println("run post",id)
22     username := randString()
23     password := randString()
24     resp,_ := http.PostForm("http://127.0.0.1:8080/login",url.Values{"username" : {username}, "password" : {password}})
25     println("login    username:",username,"password:",password)
26     if resp == nil {
27         println("login fail")
28         return
29     }
30     println(resp.StatusCode)
31     resp.Body.Close();
32     post1(username)
33 }
34 func post1(s string) {
35     //ch<-1
36     for true{
37         time.Sleep(time.Second * 10)
38         resp,_ := http.PostForm("http://127.0.0.1:8080/check",url.Values{"username" : {s}})
39         if resp == nil {
40             println("post1 no response")
41             return
42         }
43         defer resp.Body.Close();
44         println("check online :",s)
45     }
46 }
47 func DoRequest() {
48     for i:=0; i< 100; i++ {
49         transport := http.Transport{
50             DisableKeepAlives : true,
51         }
52         client := &http.Client{
53             Transport : &transport,
54         }
55
56         username := randString()
57         password := randString()
58         req, err := http.NewRequest("POST", "http://127.0.0.1:8080/login",
59         strings.NewReader(url.Values{"username" : {username}, "password" : {password}}.Encode()))
60         if err != nil {
61             println("error:",err.Error())
62         }
63
64         req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
65         req.Header.Set("Cookie", "name=anny")
66         req.Header.Set("username",username)
67         req.Header.Set("password",password)
68         println("login    username:",username,"password:",password)
69         resp, err := client.Do(req)
70         if err != nil {
71             println("error:",err.Error())
72         }
73         if resp == nil {
74             println("login no response")
75             return
76         }
77         defer resp.Body.Close()
78
79         body, err := ioutil.ReadAll(resp.Body)
80         if err != nil {
81             println("error:",err.Error())
82         }
83
84         fmt.Println(string(body))
85         go post1(username)
86     }
87 }
88 func main()  {
89     //ch=make(chan int,100000)
90     for i:=0 ;i<10;i++ {
91          go DoRequest()
92     }
93     for true {
94     //    if len(ch) > 10000 {
95     //        println(len(ch))
96     //    }
97     }
98 }

code

时间: 2024-10-11 00:00:20

go http 客户端的相关文章

使用OAuth打造webapi认证服务供自己的客户端使用

一.什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版.注意是Authorization(授权),而不是Authentication(认证).用来做Authentication(认证)的标准叫做openid connect,我们将在以后的文章中进行介绍. 二.名词定义 理解OAuth中的专业术语能够帮助你理解其流程模式,OAuth中常用的名词术语有4个,为了便于理解这些术语,我们先假设一个很常见的授权场景: 你访问了一个日志网站(thir

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

nagios客户端安装与配置windows篇

一.被监控的windows xp客户端的配置 1.安装NSClient++并安装下载地址: http://sourceforge.net/projects/nscplusNSClient++-0.3.8-Win32.msi  NSClient++-0.3.8-x64.msi 2.安装NSClient++双击安装 -> next -> 同意 -> next  -> next -> next -> 设置允许IP,设置密码(这里密码一般可以不设置),Modules to lo

SpringMVC中文件上传的客户端验证

SpringMVC中文件上传的客户端验证 客户端验证主要思想:在jsp页面中利用javascript进行对文件的判断,完成验证后允许上传 验证步骤:1.文件名称 2.获取文件的后缀名称 3.判断哪些文件类型允许上传 4.判断文件大小 5.满足条件后跳转后台实现上传 前台界面(验证上传文件是否格式满足要求): <body> <h2>文件上传</h2> <form action="upload01" method="post" 

linux编译安装mssql客户端和配置php连接mssql

凡是连接数据库,必须安装客户端,我一般写博客都不写原理,但是后来发现回头看自己写的自己都看不懂,所以这章博客会多一点原理性的东西. 数据库的连接一般都是在客户端上完成的,MySQL也不例外,安装mysql时一般都会这么安装: #yum install mysql mysql-server 上面的mysql就是安装的客户端,mysql-server就是服务端,不安装客户端(mysql)就没办法执行mysql连接命令:mysql -u user -p pass -h -P port 而sqlserv

MySQL客户端软件

MySQL软件是基于C/S模式的数据库管理系统,我们可以通过各种客户端软件来与MySQL数据库管理系统相关联.MySQL公司开发了众多的客户端软件来帮助用户管理MySQL软件,最著名的就是 MySQL Command Line Client 和 MySQL-Workbench 客户端软件. 1. 命令行客户端软件--MySQL Command Line Client(官方) MySQL软件安装完后,一般都会安装这个简单命令行实用程序.开始菜单里可以找到并点击打开它,接着输入密码,登陆到MySQL

XFire构建web service客户端的五种方式

这里并未涉及到JSR181Annotations的相关应用,具体的三种方式如下 ①通过WSDL地址来创建动态客户端②通过服务端提供的接口来创建客户端③使用Ant通过WSDL文件来生成客户端 第一种方式:通过WSDL地址来创建动态客户端 view plainprint? packagecom.jadyer.client; importjava.net.MalformedURLException; importjava.net.URL; importorg.codehaus.xfire.client

DWZ富客户端HTML框架

一.了解 概述:是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. 目的:简单实用.扩展方便(在原有架构基础上扩展方便).快速开发.RIA思路.轻量级 使用:用html扩展的方式来代替javascript代码 思路:根据官网页面样例,查看官方代码包,查阅相关子页面,参阅帮助文档,添加固定的标签属性语法 优势:第一次打开页面时载入界面到客户端, 之后和服务器的交互只是数据交互, 不占用界面相关的网络流量,开源免费 劣势:文档少,开发者少,共享资源少,帮助文档不易阅读 二.资料 官方

Mysql数据库之三:数据库术语和客户端登陆

在安装好数据库之后,我们需要对它的一些基本概念做些了解,如前所述:数据库是由多个有关联的表所组成.那么在这个表中包括如行.列.主键.外键.索引等. 数据库:有关联的表的集合. 数据表:表是数据的矩阵,库中的表可以看成是一张电子表格. 列:一列包含了性质相同的数据,如年龄,电话号码. 行:一组相关的数据,也称一条数据记录. 主键:主键是唯一的,一张数据表中只能包含一个主键,具有唯一性.可以使用主键来查询数据. 外键:主要用于关联两张表. 索引:使用索引可以快速查询数据表中的记录,类似书的目录. M

Redis集群的高可用测试(含Jedis客户端的使用)

Redis集群的使用测试(Jedis客户端的使用) 1.  Jedis客户端建议升级到最新版(当前为2.7.3),这样对3.0.x集群有比较好的支持. https://github.com/xetorthio/jedis http://mvnrepository.com/artifact/redis.clients/jedis 2.  直接在Java代码中链接Redis集群: // 数据库链接池配置 JedisPoolConfig config = new JedisPoolConfig();