java网络编程

来源:互联网 发布:如何禁止程序访问网络 编辑:程序博客网 时间:2024/04/30 13:19
java网络编程
网络底层传输的基本原理


Tcp和Udp的概念
TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。
UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
URL统一资源定位器
URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW,FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。

二.创建一个Socket
服务端的建立



客户端建立




客户端:
import java.io.*;  import java.net.*;  public class TalkClient {    public static void main(String args[]) {      try{        Socket socket=new Socket("127.0.0.1",4700);         //向本机的4700端口发出客户请求        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));        //由系统标准输入设备构造BufferedReader对象        PrintWriter os=new PrintWriter(socket.getOutputStream());        //由Socket对象得到输出流,并构造PrintWriter对象        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));        //由Socket对象得到输入流,并构造相应的BufferedReader对象        String readline;        readline=sin.readLine(); //从系统标准输入读入一字符串        while(!readline.equals("bye")){         //若从标准输入读入的字符串为 "bye"则停止循环          os.println(readline);           //将从系统标准输入读入的字符串输出到Server          os.flush();           //刷新输出流,使Server马上收到该字符串          System.out.println("Client:"+readline);           //在系统标准输出上打印读入的字符串          System.out.println("Server:"+is.readLine());           //从Server读入一字符串,并打印到标准输出上          readline=sin.readLine(); //从系统标准输入读入一字符串        } //继续循环        os.close(); //关闭Socket输出流        is.close(); //关闭Socket输入流        socket.close(); //关闭Socket      }catch(Exception e) {        System.out.println("Error"+e); //出错,则打印出错信息      }  }}


服务端
import java.io.*;  import java.net.*;  import java.applet.Applet;  public class TalkServer{    public static void main(String args[]) {      try{        ServerSocket server=null;        try{           server=new ServerSocket(4700);         //创建一个ServerSocket在端口4700监听客户请求        }catch(Exception e) {          System.out.println("can not listen to:"+e);         //出错,打印出错信息        }        Socket socket=null;        try{          socket=server.accept();           //使用accept()阻塞等待客户请求,有客户          //请求到来则产生一个Socket对象,并继续执行        }catch(Exception e) {          System.out.println("Error."+e);           //出错,打印出错信息        }        String line;        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));         //由Socket对象得到输入流,并构造相应的BufferedReader对象        PrintWriter os=newPrintWriter(socket.getOutputStream());         //由Socket对象得到输出流,并构造PrintWriter对象        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));         //由系统标准输入设备构造BufferedReader对象        System.out.println("Client:"+is.readLine());         //在标准输出上打印从客户端读入的字符串        line=sin.readLine();         //从标准输入读入一字符串        while(!line.equals("bye")){         //如果该字符串为 "bye",则停止循环          os.println(line);           //向客户端输出该字符串          os.flush();           //刷新输出流,使Client马上收到该字符串          System.out.println("Server:"+line);           //在系统标准输出上打印读入的字符串          System.out.println("Client:"+is.readLine());          //从Client读入一字符串,并打印到标准输出上          line=sin.readLine();           //从系统标准输入读入一字符串        }  //继续循环        os.close(); //关闭Socket输出流        is.close(); //关闭Socket输入流        socket.close(); //关闭Socket        server.close(); //关闭ServerSocket      }catch(Exception e){        System.out.println("Error:"+e);         //出错,打印出错信息      }    }  }


通过tcp上传图片
客户端



服务端


原创粉丝点击