疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java中的网络编程


 

  Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的

  C/S程序应用:客户/服务器模式,如QQ客户端,客户端连到服务器上,一个C/S模式的应用必须有两套程序,一个是客户端的程序,一个是服务器程序。

  B/S程序应用:浏览器/服务器模式,如当下的各种网站都是B/S模式,所有的程序代码都在服务器上,用户通过浏览器去访问。

  C/S程序分为两种:

  基于TCP协议:Socket(套接字), 可靠的编程: A->B 如打电话先建立连接

  基于UDP协议:不可靠,如短信功能。

  如果编写一个TCP程序需要JAVA的两个包支持:

  java.net.*: 主要提供网络支持;

  |-ServerSocket类:服务器端程序

  |-Socket类:客户端程序

  java,io.*:传递信息流

  客户端的两个功能:

  1.建立Socket

  2.接收输入的命令(输入流)->网络上传输的程序考的是字节流

  以下是服务器端,客户端的两个事例程序,服务器端想客户端输出Hello word, 客户端接收并显示;

  服务器程序:

  1 import java.io.*;

  2 import java.net.*;

  3 public class TCPSever {

  4

  5 /**

  6 * @param args

  7 * @throws IOException

  8 */

  9 public static void main(String[] args) throws IOException {

  10 // TODO Auto-generated method stub

  11 //使用ServerSocket

  12 ServerSocket server = new ServerSocket(8000);

  13

  14 //每个用户在程序中就是一个Socket

  15 Socket client = null;

  16

  17 //等待客户端连接

  18 client = server.accept();

  19

  20 //像客户端打印信息

  21 PrintWriter out = null;

  22

  23 //准被向客户端打印信息

  24 out = new PrintWriter(client.getOutputStream());

  25 out.println("Hello World");

  26 out.close();

  27 client.close();

  28 server.close();

  29 }

  30

  31 }

  客户端程序:

  1 package Client;

  2 import java.io.*;

  3 import java.net.*;

  4

  5 public class TCPClient {

  6

  7 /**

  8 * @param args

  9 * @throws IOException

  10 * @throws UnknownHostException

  11 */

  12 public static void main(String[] args) throws UnknownHostException, IOException {

  13 // TODO Auto-generated method stub

  14 //表示一个客户端的Socket

  15 Socket client = null;

  16

  17 //表示一个客户端的输入信息

  18 BufferedReader buf = null;

  19 client = new Socket("localhost",8000);

  20 buf = new BufferedReader(new InputStreamReader(client.getInputStream()));

  21 System.out.println(buf.readLine());

  22 buf.close();

  23 client.close();

  24

  25 }

  26

  27 }

  在JDK中也准备了两个专门用于实现UDP的类

  1.DatagramScoket

  2.DatagramPacket

  服务器端程序:

  package Client;

  import java.io.*;

  import java.net.*;

  public class TCPClient {

  /**

  * @param args

  * @throws IOException

  * @throws UnknownHostException

  */

  public static void main(String[] args) throws UnknownHostException, IOException {

  // TODO Auto-generated method stub

  //表示一个客户端的Socket

  Socket client = null;

  //表示一个客户端的输入信息

  BufferedReader buf = null;

  client = new Socket("localhost",8000);

  buf = new BufferedReader(new InputStreamReader(client.getInputStream()));

  System.out.println(buf.readLine());

  buf.close();

  client.close();

  }

  }

  客户端程序:

  1 package Test4;

  2 import java.io.*;

  3 import java.net.*;

  4 public class UDPClient {

  5

  6 /**

  7 * @param args

  8 * @throws IOException

  9 */

  10 public static void main(String[] args) throws IOException {

  11 // TODO Auto-generated method stub

  12 DatagramSocket ds = null;

  13 DatagramPacket dp = null;

  14

  15 byte[] b = new byte[1024];

  16

  17 ds = new DatagramSocket(8000);

  18 dp = new DatagramPacket(b,b.length);

  19 ds.receive(dp);

  20 String str = new String(dp.getData(),0,dp.getLength());

  21 System.out.println(str);

  22 }

  23

  24 }