3、Socket-连接异常测试

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.BindException;
import java.net.ConnectException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;

/**
 * @name Socket连接异常测试
 * @author wujianxiong
 * @date 2016-5-20
 */
public class ConnectTester {

    public static void main(String[] args){
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String host = "127.0.0.1";
        int port = 139;
        try {
            String msg = reader.readLine();
            //直接敲回车结束循环
            while(!msg.isEmpty()&& msg!=null){
                String[] strArr = msg.split(" ");
                host = strArr[0];
                port = Integer.parseInt(strArr[1]);
                //测试连接
                ConnectTester.connect(host, port);
                msg = reader.readLine();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static void connect(String host,int port){

        SocketAddress remoteAddress = new InetSocketAddress(host, port);

        Socket socket = new Socket();
        try {
            long beginTime = System.currentTimeMillis();
            socket.bind(new InetSocketAddress("10.0.5.128", 80));
            socket.connect(remoteAddress, 1000);

            long endTime = System.currentTimeMillis();
            System.out.println(remoteAddress+" take "+(endTime-beginTime)+"ms to connect");
        } catch (BindException e) {
            System.out.println("Local address and port can‘t be binded");
        } catch (UnknownHostException e) {
            // TODO: handle exception
            System.out.println("UnKnown Host");
        } catch (ConnectException e) {
            System.out.println("Connect Refused");
        } catch (SocketTimeoutException e) {
            System.out.println("Time Out");
        } catch (IOException e) {
            System.out.println("Failed");
        } finally{
            try {
                if(socket!=null)
                    socket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}
时间: 2024-08-11 07:35:02

3、Socket-连接异常测试的相关文章

.NET Socket TCP 50W在线连接交互测试

在平常的交流中经常有人问.net socket能支持多少在线?和C++或linux下比起来应该差很远吧?其实产生这样问题的主要原因是.net很少人去做这方面的测试,而在linux下则经常听到什么100w或500w在线连接的测试.这样一个数字看起来多么地让人兴奋...其实在这几年编写通讯服务的过程中已经意识到连接数的多少对整体影响并不大,主要归功于现有成熟悉的网络模型和硬件资源.为了更进一步证实这个问题,所以打算在.NET下测试一下100w连接交互情况,不过由于硬件内存不足不能进行100W连接量,

一则线上MySql连接异常的排查过程

Mysql作为一个常用数据库,在互联网系统应用很多.有些故障是其自身的bug,有些则不是,这里以前段时间遇到的问题举例. 问题 当时遇到的症状是这样的,我们的应用在线上测试环境,JMeter测试过程中,发现每次压力测试开始时访问低前几个http request请求会超时,而之后的请求持续测试中都不会.最后一点是Tomcat的log并没有报什么错误. 压测的内容就是起200线程不停的向这个http页面发送请求,这个页面逻辑也比较简单,会在后端向数据库插入一条数据,连接池采用阿里的Druid(这个坑

Socket连接池

"池"这个概念好像最早是在操作系统的课上听过的,到后来出来工作的第二天组长也跟我提起"池"这个东东.它给我的感觉是某种对象的集合,如果要用的话就取出,不用的话就放回.在学多线程的时候有接触过线程池,在写<Socket 一对多通信>的时候想到了Socket连接池这回事,不过在网上谷歌了一下,发现这类的文章貌似不多,看了一下园友的博文<高性能Socket设计实现>,获益良多,下了份源码来看,虽然有一部分看不明白,而且由于个人水平跑不了那份代码,但

(转)TCP连接异常断开检测

TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断开的情况 TAG: TCP连接异常断开  TCP断链 TCP是一种面向连接的协议,连接的建立和断开需要通过收发相应的分节来实现.某些时候,由于网络的故障或是一方主机的突然崩溃而另一方无法检测到,以致始终保持着不存在的连接.下面介绍一种方法来检测这种异常断开的情况 1) 在TCP协议中提供了KEEPA

如何才能正确的关闭Socket连接

从TCP协议角度来看,一个已建立的TCP连接有两种关闭方式,一种是正常关闭,即四次挥手关闭连接:还有一种则是异常关闭,我们通常称之为连接重置(RESET).首先说一下正常关闭时四次挥手的状态变迁,关闭连接的主动方状态变迁是FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT,而关闭连接的被动方的状态变迁是CLOSE_WAIT->LAST_ACK->TIME_WAIT.在四次挥手过程中ACK包都是协议栈自动完成的,而FIN包则必须由应用层通过closesocket或sh

Android客户端通过Socket连接服务器

Android客户端通过Socket连接服务器. Android互联网项目中,绝大部分都有连接远程服务器的需求,连接的方式有多种,可以是TCP的方式,当然也可以通过Socket的方式. 相对于TCP的方式,Socket的方式略显的较为原始,对于客户端来说,复杂度反而比TCP的方式还要高一些,毕竟TCP的连接有现成的框架可以使用, 比如Spring等. 而使用socket方式这些工作完全需要客户端来做,也增加了客户端的工作量,不过凡事有利弊,通过socket的方式,流量上 相对于TCP等的方式更加

LR杂记-用LoadRunner编写socket应用的测试脚本

LoadRunner提供了很好的对socket应用的支持,用户可以通过录制方法完全获得客户端发送和接收的数据,然后在录制的基础上对相应的数据进行参数化和关联等处理. 但在有些情况下(例如,客户端程序没有windows上的版本),我们就很难通过录制达成生成脚本的目标了.但如果我们能够完全知晓服务端和客户端的交互过程,完全手工编写一个测试脚本也并不是一件特别困难的事情. 在本文中,我们以一个实际的例子说明如何根据服务端和客户端交互的过程,用LoadRunner自行编写相应的脚本. 以下是服务端工作线

JBoss配置解决高并发连接异常问题(转)

这两天一个项目在做压力测试的时候,发现只要并发数超过250个,连续测试两轮就会有连接异常出现,测试轮数越多出现越频繁,异常日志如下: [plain] view plain copy Caused by: com.caucho.hessian.client.HessianConnectionException: 500: java.io.IOException: Error writing to server at com.caucho.hessian.client.HessianURLConne

高性能 TCP Socket连接关闭释放集中调度类

/// <summary> /// Socket关闭调度类,此类提供了静态访问,但是此类可以实例化 /// </summary> /// <remarks> /// Socket连接关闭类 /// 3个队列 /// 1.shotdown 关闭队列 /// 步骤1 /// 2.close 队列 间隔2秒 /// 步骤2 /// 3.dispose 队列 间隔1秒 /// 步骤3 /// </remarks> public class CloseSoketDis