Java Socket编程如何创建二者关系

转自:http://developer.51cto.com/art/201003/190582.htmjava

Java Socket编程须要你们详细的学习,有关的技术一直在不断的更新。那么要如何才能掌握好有关的技术更新呢?接下来咱们就来学些有关Java Socket编程的相关知识。程序员

 

事实上网络编程简单的理解就是两台计算机相互通信数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工做.Java Socket编程就是其中之一.对于Java而言.这些Api存在与java.net 这个包里面.所以只要导入这个包就能够准备网络编程了.编程

网络编程的基本模型就是客户机到服务器模型.简单的说就是两个进程之间相互通信,而后其中一个必须提供一个固定的位置,而另外一个则只须要知道这个固定的位置.并去创建二者之间的联系..而后完成数据的通信就能够了.这里提供固定位置的一般称为服务器,而创建联系的一般叫作客户端.基于这个简单的模型,就能够进入网络编程啦.服务器

Java对这个模型的支持有不少种Api.而这里我只想介绍有关Java Socket编程的编程接口.对于Java而言已经简化了Socket的编程接口.首先咱们来讨论有关提供固定位置的服务方是如何创建的.Java提供了ServerSocket来对其进行支持.事实上当你建立该类的一个实力对象并提供一个端口资源你就创建了一个固定位置可让其余计算机来访问你.ServerSocket server=new ServerSocket(6789);这里稍微要注意的是端口的分配必须是惟一的.由于端口是为了惟一标识每台计算机惟一服务的.另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 做为保留端口,所以你所分配的端口只能是1024个以后的.好了.网络

咱们有了固定位置.如今所须要的就是一根链接线了.该链接线由客户方首先提出要求.所以Java一样提供了一个Java Socket编程对象来对其进行支持.只要客户方建立一个Socket的实例对象进行支持就能够了.Socket client=new Socket(InetAddress.getLocalHost(),5678);客户机必须知道有关服务器的IP地址.对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须经过它的静态方法来提供.它的静态方法主要提供了获得本机IP 和经过名字或IP直接获得InetAddress的方法.工具

好了.上面的方法基本能够创建一条连线让两台计算机相互交流了.但是数据是如何传输的呢?事实上I/O操做老是和网络编程息息相关的.由于底层的网络是继续数据的.除非远程调用,处理问题的核心在执行上.不然数据的交互仍是依赖于IO操做的.因此你也必须导入java.io这个包.java的IO操做也不复杂.它提供了针对于字节流和Unicode的读者和写者,而后也提供了一个缓冲用于数据的读写.学习

 

    1. BufferedReader in=new BufferedReader(new InputStream
      Reader(server.getInputStream()));   
    2. PrintWriter out=new PrintWriter(server.getOutputStream());  

上面两句就是创建缓冲并把原始的字节流转变为Unicode能够操做.而原始的字节流来源于Java Socket编程的两个方法.getInputStream()和getOutputStream()方.分别用来获得输入和输出.那么如今有了基本的模型和基本的操做工具.咱们能够作一个简单的Socket例程了.ui

服务方:spa

 1 import java.io.*;  2 import java.net.*;  3 public class MyServer {  4 public static void main(String[] args) throws IOException{  5 ServerSocket server=new ServerSocket(5678);  6 Socket client=server.accept();  7 BufferedReader in=new BufferedReader(new InputStreamReader  8 (client.getInputStream()));  9 PrintWriter out=new PrintWriter(client.getOutputStream()); 10 while(true){ 11 String str=in.readLine(); 12 System.out.println(str); 13 out.println("has receive...."); 14 out.flush(); 15 if(str.equals("end")) 16 break; 17 } 18 client.close(); 19 } 20 }

这个Java Socket编程的主要目的在于服务器不断接收客户机所写入的信息只到.客户机发送"End"字符串就退出程序.而且服务器也会作出"Receive"为回应.告知客户机已接收到消息。.net

相关文章
相关标签/搜索