快速业务通道

浅谈Socket编程及Java实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
}    }    }

浅谈Socket编程及Java实现(2)

时间:2010-12-26 yesky wayne

这个程序是一个非常的简单的数据通讯的例子,程序先创建了一个Socket并和主机mice上的端口9000相连接,然后打开输入输出流,接着程序从标准输入接收字符并写入流中,每写满一行(以用户键入回车为标志),就把缓冲区中的字符串送往mice上的服务器端程序进行处理,等待服务器端的应答。input.readLine()方法调用将导致程序停滞直到收到应答信息,程序将一直重复这个过程,直到用户输入中止符。最后程序要关闭socket输入输出流,在关闭socket和服务器端的连接。

上面我们看了如何使用Java编写客户端的Socket接口程序,下面我也想简要的谈一谈服务器端的Socket接口程序的Java实现方法,其过程如下所述:

1、首先调用ServerSocket类以某个端口号为参数,创建一个ServerSocket对象,即是服务器端的服务程序在该指定端口监听的Socket。

2、服务器端程序使用ServerSocket对象的accept()方法,接收来自客户机程序的连接请求,此时服务器端将一直保持停滞状态,直到收到客户端发来的连接请求,此时该方法将返回一个新建的Socket类的实例,代表和客户机建立的通讯链路在服务程序内的通讯端点。如果采用Java的多线程编程方法,可以实现并发服务器,继续监听来自其他客户的连接请求。

3、使用新建的Socket对象创建输入、输出流对象。

4、使用流对象的方法完成和客户端的数据传输,按约定协议识别并处理来自客户端的请求数据,并把处理的结果返回给客户端。

5、客户端工作完毕后,则服务器端程序关闭和客户端通讯的流和通讯的Socket。

6、在服务器程序运行结束之间,应当关闭用来监听的Socket.

下面让我们来看一个服务器端的程序的Java实现:

代码二:

import java.net.*;    import java.io.*;    public class SocketCommunicationServer    {     public static void main(String[] args)     try     {      boolean flag=true;//设置标志位为真      Socket client=null;//创建Socket client以接收来自客户端的请求      String inputLine;      ServerSocket serverSocket =new ServerSocket (9000);//以端口9000创建一个服务器Socket      System.out.println("服务器在端口9000上监听");      file://也可以使用serverSocket.getLocalPort()来获得端口号      while(flag)      {       client=serverSocket.accept();       file://监听并接受与此Socket的连接,该方法会阻塞直到有一个连接产生       DataInputStream input=new DataInputStream(new BufferedInputStream(client.getInputStream()));       PrintStream output=new PrintStream(new BufferedOutputStream(client.getOutputStream());       while (( inputLine= input.readLine())!=null)        {         if(inputLine.equals("Stop"))         {          flag=false;          break;         }         output.println(inputLine);         output.flush();        }        output.close();        input.close();        client.close();       }       serverSocket.close();       }catch(IOException e){}      }     }    }

以上,我简略的谈了一下Socket编程的机制以及使用Java进行Socket编程的实现方法,希望能对大家有所帮助。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号