1  socket构造器:

public Socket() 创建一个Socket套接字
public Socket(InetAddress address,int port) 创建一个指定IP和端口的套接字
Socket(InetAddress address, int port, InetAddress localAddr, int localPort) 创建一个指定IP和端口的套接字;并将其和指定的远程端口连接起来
Socket(Proxy proxy) 创建一个指定代理的套接字
Socket(SocketImpl impl) 创建一个用户指定的套接字
Socket(String host, int port) 创建一个IP和端口的套接字
Socket(String host, int port, InetAddress localAddr, int localPort)  
·1 public Socket()构造器:
创建一个Socket对象,并且连接指定的socket地址;设置连接的超时时间为60s;
  1. package com.asiaInfo.caozg.ch_01;
  2.  
  3. import java.io.IOException;
  4. import java.net.InetAddress;
  5. import java.net.InetSocketAddress;
  6. import java.net.Socket;
  7. import java.net.SocketAddress;
  8.  
  9. /**
  10. * @Authgor: gosaint
  11. * @Description:
  12. * @Date Created in 14:55 2018/1/13
  13. * @Modified By:socket相关的构造方法
  14. */
  15. public class SocketContructor {
  16. public static void main(String[] args) throws IOException{
  17. Socket socket=new Socket();
  18. // 设置连接的端口和ip
  19. SocketAddress address=new InetSocketAddress("localhost",8000);
  20. // 连接指定的socketAddress,并且设置超时时间
  21. socket.connect(address,60000);
  22. }
  23. }
接下来我们看看connetc()方法;
public void connect(SocketAddress endpoint,int timeout)throws IOException
       SocketAddress 这个类代表一个没有协议附件的套接字地址。作为一个抽象类,它应该是一个具体的子类实现。 很显然,在上述的代码中:InetSocketAddress就是SocketAddress的实现类,并且指定了socket连接的地址:localhost 8000。timeout为超时时间,单位ms.如果60s内连接不上,就是报相关的异常;
·2 java.net.ConnectException: Connection refused: connect
    连接拒绝异常:就是上述代码,不可以连接这个指定的地址;

  1. package com.asiaInfo.caozg.ch_01;
  2.  
  3. import java.io.IOException;
  4. import java.net.*;
  5.  
  6. /**
  7. * @Authgor: gosaint
  8. * @Description:
  9. * @Date Created in 15:09 2018/1/13
  10. * @Modified By:socket的常见异常
  11. */
  12. public class IOExceptionSocket {
  13. public static void main(String[] args) {
  14. String host="localhost";
  15. int port=25;
  16. // 如果数组的长度大于1,那么将第一个元素赋值给host,第二个元素赋值给port
  17. if(args.length>1){
  18. host=args[0];
  19. port=Integer.parseInt(args[1]);
  20. }
  21. System.out.println("==========");
  22. new IOExceptionSocket().connect(host,port);
  23. }
  24.  
  25. private void connect(String host, int port) {
  26. //根据传递的host和port构建连接的地址
  27. SocketAddress address=new InetSocketAddress(host,port);
  28. Socket socket=null;
  29. String result="";
  30. try {
  31. long begin=System.currentTimeMillis();//开始连接时间
  32. socket=new Socket();
  33. socket.connect(address,20000);
  34. long end=System.currentTimeMillis();//结束时间
  35. result=(end-begin)+"ms";
  36. }catch (BindException e){
  37. result="本地地址和端口绑定异常";
  38. }catch (UnknownHostException e){
  39. result="不知道的端口异常";
  40. }catch (ConnectException e){
  41. result="连接异常";
  42. }catch (SocketTimeoutException e){
  43. result="连接超时异常";
  44. }catch (IOException e){
  45. result="IO异常";
  46. }finally {
  47. try {
  48. if(socket!=null)socket.close();
  49. }catch (IOException e){
  50. e.printStackTrace();
  51. }
  52. }
  53. System.out.println(address+":"+result);
  54. }
  55. }

Socket对象以及异常的更多相关文章

  1. socket对象放在一个datagridview的row的tag里面在拿出来 为什么是已释放

     socket对象放在一个datagridview的row的tag里面在拿出来 为什么是已释放 

  2. 【C/C++学院】0831-类与对象的异常/面试100题1-100

    类与对象的异常 Cpp异常 #include <iostream> #include <string.h> using namespace std; //标识错误的类型 cla ...

  3. TCP/IP以及Socket对象基本

    1 OSI七层模型概念介绍 物理层:数据以比特的方式进行传递,典型的设备是集线器.该层主要规定了设备的电压或者端口等等一些列物理层面上的规定     数据链路层:该层数据以帧的方式进行传递,主要是两个 ...

  4. socket编程报异常java.io.EOFException

    一个客户端连接服务器的小程序,服务器端可以正常读取客户端发来的数据 但是当客户端关闭时,服务端也关闭了,并且抛出如下的异常: java.io.EOFException at java.io.DataI ...

  5. pythond对象、异常、反射的学习笔记

    python多继承,刚开始我是表示惊讶的,毕竟学的php,哪来的多继承?顶多也就是利用接口模拟多继承后者使用反射机制实现.那么还是来看看python的强大吧 1 首先,Python的类继承了多个类,那 ...

  6. Socket中的异常和参数设置

    1.常见异常 1.java.net.SocketTimeoutException . 这个异 常比较常见,socket 超时.一般有 2 个地方会抛出这个,一个是 connect 的 时 候 , 这 ...

  7. JavaScript Date 对象的异常现象-new Date('0001-01-01 00:00:00')

    Date 对象 Date 对象用于处理日期和时间. new Date() :Date 对象会自动把当前日期和时间保存为其初始值. 打开chrome的开发者工具,在Console敲下new Date() ...

  8. socket的几大异常以及其出现的原因

    1:我是模拟了一个客户端不断的向服务器发送消息,但是当某一时刻我把服务端断掉,客户端就出现了写异常 java.net.SocketException: Connection reset by peer ...

  9. C++异常 将对象用作异常类型

    通常,引发异常的函数将传递一个对象.这样做的重要有点之一是,可以使用不同的异常类型来区分不同的函数在不同情况下引发的异常.另外,对象可以携带信息,程序员可以根据这些信息来确定引发异常的原因.同时,ca ...

随机推荐

  1. easy_install和pip的安装及使用

    在终端输入命令报错后,在网上找到了这篇博客,用easy_install命令安装pip,问题解决 Fatal error in launcher: Unable to create process us ...

  2. c++之默认参数的函数

    默认参数,看个例子就明白了 int add(int a=5,int b=6,z=3): int main(){ add():// 全部默认 add(1,5)://第三个参数默认 add(1,2,3): ...

  3. ios多种语言的本地化思路

    多语言在应用程序中一般有两种做法: 一.程序中提供给用户自己选择的机会: 二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法 ...

  4. 20145229吴姗珊 《Java程序设计》小总结

    20145229吴姗珊 <Java程序设计>小总结 教材学习内容总结 由于今天考试考到了操作题,根本无从下手,然后才意识到原来之前的学习都是蜻蜓点水,一味的把学习建立在给老师学,为家长学的 ...

  5. hihocoder #1032 : 最长回文子串【 manacher算法实现 】

    #1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  6. JSP<jsp:forward>与<%@ include%>

    JSP<jsp:forward>与<%@ include%><jsp:include> <jsp:forward file="forwardTo_p ...

  7. 第一篇:Git操作详解

    最近由于项目的需要,我需要负责整个项目的托管,其中涉及到很多Git相关的命令,所以就将之前用到的git相关的命令做了一个总结和归纳.由于开发环境是Linux,所以我接下来的操作命令均针对Linux环境 ...

  8. Linux课程---5、常用文件命令和目录命令(创建文件命令)

    Linux课程---5.常用文件命令和目录命令(创建文件命令) 一.总结 一句话总结: touch file1 1.管道符|有什么用? 将前一个命令的结果作为后一个命令的输入:比如查看文件前3行:ca ...

  9. SQL多列查询最大值

    直接从某一列查询出最大值或最小值很容易,通过group by字句对合适的列进行聚合操作,再使用max()/min()聚合函数就可以求出. 样本数据如下: key_id x y z A 1 2 3 B ...

  10. linux命令学习笔记(0):man命令

    Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. Linux的man手册共有以下几个章节: 代號 代表內容 使用者在shell中可以操作的指令或可执行 ...