`
moor212
  • 浏览: 174103 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一段Java socket代码

阅读更多

在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用SocketAddress类来向connect方法传递服务器的IP和端口。虽然这种方式从表面上看要麻烦一些,但它会给我们带来另外一个好处,那就是网络地址的重用。

    所谓网络地址的重用表现在两个方面:

    1. 通过建立一个SocketAddress对象,可以在多次连接同一个服务器时使用这个SocketAddress对象。

    2. 在Socket类中提供了两个方法:getRemoteSocketAddress和getLocalSocketAddress,通过这两个方法可以得到服务器和本机的网络地址。而且所得到的网络地址在相应的Socket对象关闭后任然可以使用。

 

 

DataInputStream   input = null;   

  1.   Socket socket = null;   
  2. //  InputStream input = null; // 输出流   
  3.   OutputStream output = null// 输入流   
  4.   InetSocketAddress inetSocketAddress = null;   
  5.   PrintWriter out = null;   
  6.   String text = null;   
  7.      
  8.   BufferedReader line = null;   
  9.   int communicateTime = 0// 当前已尝试连接的次数   
  10.   try {   
  11.    Properties props = BAConfiger.getProperties();//获取配置文件中的参数   
  12.    String socketIP = props.getProperty("socketIP");// IP   
  13.    int socketProt = Integer.parseInt(props.getProperty("socketProt"));// 端口   
  14.    int socketConnectionCount = Integer.parseInt(props.getProperty("socketConnectionCount"));// 最大连接次数   
  15.    int socketConnectionTime = Integer.parseInt(props.getProperty("socketConnectionTime"));// 超时时间   
  16.    int socketWateServerTime = Integer.parseInt(props.getProperty("socketWateServerTime"));// 超时时间   
  17.       
  18.    inetSocketAddress = new InetSocketAddress(socketIP, socketProt);   
  19.    // ------------创建连接------------   
  20.    socket = new Socket();   
  21.    while (communicateTime < socketConnectionCount) {   
  22.     socket.connect(inetSocketAddress, socketConnectionTime * 1000);   
  23.     if (socket.isConnected()) {   
  24.      System.out.println("连接服务器成功!");   
  25.      break;   
  26.     }   
  27.     communicateTime++;   
  28.    }   
  29.    if (socket.isConnected()) {   
  30.     output = socket.getOutputStream();   
  31.     input = new DataInputStream(socket.getInputStream());   
  32.     output.write(encryptText.getBytes());   
  33.     output.flush();// 发送信息至银联   
  34.     int avali = 0;   
  35.     for (int i = 0;i < socketWateServerTime; i++){   
  36.      avali = input.available();   
  37.      if (avali == 0){   
  38.       Thread.sleep(1000);   
  39.       System.out.println("银行没有返回信息,继续等待......");   
  40.      }else{   
  41.       System.out.println("返回的数据长度是: " + avali);   
  42.       byte aval[] = new byte[avali];   
  43.       int bytesRead = input.read(aval,0,avali);   
  44.       text = Pub.decodeStr(aval, "GB2312");   
  45.       System.out.println(">>>>>>>>>服务器返回的数据是: " + text);   
  46.       break;   
  47.      }   
  48.     }   
  49.    }

注:上面这段代码存在问题。在发生异常的情况下,会跳过计数,起不到该有的作用。这是个问题。欢迎各位留言,解决。谢谢。

分享到:
评论

相关推荐

    java实现socket多线程。模拟实现通过使用多个WiFi模块+串口助手进行数据发送,采用socket协议,接收数据进行解析

    2. 实现socket多线程,监听端口1314,最大socket队列100,都可以人为设置 3. 模拟了对串口助手发送来的一串十六进制数据进行解析 4. 使用串口助手发送数据,模拟数据如图“模拟数据.png”所示 爱吃凉拌辣芒果 ...

    一段java代码,交流学习用

    交流学习用,大家帮忙看看有什么问题?在本机调试的时候总是socket总是空值

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    基于Java Socket实现一个简易在线聊天功能(一)

    主要给大家介绍基于Java Socket实现一个简易在线聊天功能(一),分为客户端和服务端两段代码,非常具有参考价值,感兴趣的朋友一起学习吧

    java源码包2

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    java源码包4

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    java源码包3

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    java jdk实列宝典 光盘源代码

    java为数据结构中的列表定义了一个接口类java.util.list同时提供了3个实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件...

    Android基于Socket聊天室

    Android基于Socket实现的聊天室功能 注解详细 一看就懂 包含服务器和客户端 服务器是一段java代码 客户端直接运行在手机上 用DOS(MyEclipse)开启服务器 然后运行模拟器或者手机即可。 注:请将客户端代码中的ip...

    JAVA 实现 ping

    一段JAVA代码 实现ping功能 import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import java.nio.channels.SocketChannel;

    java基于C/S模式基于Socket实现聊天程序,有客户端和服务端,基础代码,仅演示C/S模式下的程序发送与监听原理

    这段代码实现了简单的基于Socket的客户端服务器端程序。客户端程序创建一个Socket对象并与服务器建立连接,然后从服务器接收消息并提示用户输入消息发送给服务器。服务器端程序创建一个监听Socket对象以等待客户端...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件...

    基于Vue的电影在线预订与管理系统-后台java代码(ssm)(毕业设计).zip

    Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。 网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。 编译和解释性 ...

    java语言之端口扫描(源代码+打包的jar)

    socket端口扫描程序,使用java语言编写。工具:Eclipse+windowbuilder插件。实现了IP段的扫描及TCP端口的扫描。

Global site tag (gtag.js) - Google Analytics