当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

Java编程那些事儿104——网络编程技术3[Java编程]

赞助商链接



  本文“Java编程那些事儿104——网络编程技术3[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

为了一步一步的掌握网络编程,下面再研究网络编程中的两个基本问题,通过办理这两个问题将对网络编程的熟习深化一层.

1、若何复用Socket衔接?

在前面的示例中,客户端中成立了一次衔接,只发送一次数据就关闭了,这就相当于拨打电话时,电话打通了只对话一次就关闭了,其实越发常用的应当是拨通一次电话今后多次对话,这就是复用客户端衔接.

那么若何实现成立一次衔接,举行多次数据交换呢?其实很简单,成立衔接今后,将数据交换的逻辑写到一个循环中便可以了.这样只要循环不完毕则衔接就不会被关闭.按照这种思绪,可以改革一下上面的代码,让该程序可以在成立衔接一次今后,发送三次数据,当然这里的次数也可以是多次,示例代码以下:

package tcp;
import java.io.*;
import java.net.*;
/**
* 复用衔接的Socket客户端
* 功效为:发送字符串“Hello”到服务器端,并打印出服务器端的反馈
*/
public class MulSocketClient {
 public static void main(String[] args) {
  Socket socket = null;
  InputStream is = null;
  OutputStream os = null;
  //服务器端IP地址
  String serverIP = "127.0.0.1";
  //服务器端端口号
  int port = 10000;
  //发送内容
  String data[] ={"First","Second","Third"};
  try {
   //成立衔接
   socket = new Socket(serverIP,port);
   //初始化流
   os = socket.getOutputStream();
   is = socket.getInputStream();
   byte[] b = new byte[1024];
   for(int i = 0;i < data.length;i++){
    //发送数据
    os.write(data[i].getBytes());
    //接纳数据
    int n = is.read(b);
    //输出反馈数据
    System.out.println("服务器反馈:" + new String(b,0,n));
   }
  } catch (Exception e) {
    e.printStackTrace(); //打印非常信息
  }finally{
    try {
     //关闭流和衔接
     is.close();
     os.close();
     socket.close();
    } catch (Exception e2) {}
  }
 }
}

该示例程序和前面的代码相比,将数据交换部份的逻辑写在一个for循环的内容,这样便可以成立一次衔接,顺次将data数组中的数据按照次序发送给服务器端了.

假如还是利用前面示例代码中的服务器端程序运行该程序,则该程序的后果是:

java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.net.SocketInputStream.read(SocketInputStream.java:90)
at tcp.MulSocketClient.main(MulSocketClient.java:30)

服务器反馈:First

明显,客户端在实际运行时呈现了非常,呈现非常的缘由是什么呢?假如细心阅读前面的代码,应当还记得前面示例代码中的服务器端是对话一次数据今后就关闭了衔接,假如服务器端程序关闭了,客户端持续发送数据必定会呈现非常,这就是呈现该问题的缘由.


  以上是“Java编程那些事儿104——网络编程技术3[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .