为了账号安全,请及时绑定邮箱和手机立即绑定

Java Socket应用---通信是这样练成的

难度初级
时长 2小时 0分
学习人数
综合评分9.77
496人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • Socket通信模型

    查看全部
  • 基于TCP协议的Socket通信:服务器端

    //4.关闭资源

    br/isr/is/socket/serverSocket.close();

    查看全部
  • 服务端:
    1、创建ServerSocket对象,绑定监听端口
    2、通过accept()方法监听客户端请求
    3、连接建立后,通过输入流读取客户端发送的请求信息
    4、通过输出流向客户端发送响应信息
    5、关闭相关资源

    客户端:
    1、创建Socket对象,指明需要连接的服务器的地址和端口号
    2、连接建立后,通过输出流向服务器端发送请求信息
    3、通过输入流获取服务器相应的信息
    4、关闭相关资源。

    查看全部
  • TCP协议是面向连接、可靠、有序的、以字节流的方式发送数据

    基于TCP协议实现网络通信的类 

     客户端的Socket类 

    服务器端的ServerSocket类TCP的

    Socket通信实现步骤

    1,创建服务器端ServerSocket和客户端Socket

    2,打开连接到Socket的输出和输入流

    3,按照协议对Socket进行读写操作

    4,关闭输入输出流,关闭Socket

    Socket通信模型如图:

    查看全部
    0 采集 收起 来源:Socket 简介

    2018-06-03

  • 1.URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址。 2.URL由两部分组成:协议名称和资源名称,中间用冒号隔开。 3.在java.net中提供了URL类来表示URL。 使用URL读取网页的内容 1.通过URL对象的openStream()方法可以得到指定资源的输入流。 2.通过输入流可以读取、访问网络上的数据。 ---------------------------------------- //创建一个URL实例 URL imooc=new URL("http://www.imooc.com"); //?后面表示参数,#后面表示锚点 URL url=new URL(imooc, "/index.html?username=tom#test"); //主要方法: //getProtocol();getHost();getPort();getPath();getFile();getRef();getQuery(); //读取网页内容 //通过URL的openStream方法获取URL对象所表示的资源的字节输入流 InputStream is = url.openStream()

    查看全部
  • InetAddress类没有构造方法,不能直接new出一个对象

    可以通过InetAddress类的静态方法获得InetAddress的对象; InetAddress.getLocalHost();

     InetAddress.getByName("");//可以传入IP地址或主机名 

    类主要方法: 

    String - address.getHostName(); 

    String - address.getHostAddress(); 主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式

    查看全部
  • Socket编程 一、网络基础知识 两台计算机要通过网络进行通信,必须具备:a、唯一的标识(IP地址);                                        

    b、需要共同的语言(协议);                                       

     c、辨别不同应用程序(端口号)。

     1、IP地址: 每台计算机的唯一标识,用来区分网络中的不同主机,是两台主机进行网络通信必不可少的。IPv4

     2、协议: a、TCP/IP协议:目前世界上应用最为广泛的协议。是以TCP和IP为基础的不同层次上多个协议的集合。               也称为:TCP/IP协议族  或者  TCP/IP协议栈。

     b、TCP: Transmission Control Protocol   传输控制协议

     c、IP :Internet Protocol  互联网协议

     d、TCP/IP模型(网络分层):

    1、物理层;网线。。。                        

     2、数据链路层                        

     3、网络层                         

    4、传输层:TCP/IP协议                        

     5、应用层:HTTP超文本传输协议、FTP文件传输协议、SMTP简单邮件传送协议、Telnet远程登录服务。

     3、端口号:

     a、用于区分不同的应用程序;

     b、端口号范围为0-65535,其中0-1023为系统所保留; 

    c、IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础。

     d、常用端口号-- http: 80;  ftp; 21;  telnet; 23。

     JAVA中得网络支持

     针对网络通信的不同层次,Java提供的网络功能有四大类:

     1、InetAddress:用于标识网络上的硬件资源。(IP地址)

     2、URL:统一资源定位符---通过URL可以直接读取或写入网络上得数据。 

    3、Sockets:使用TCP协议实现网络通信的Socket相关的类。

     4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。

    查看全部
    0 采集 收起 来源:网络基础简介

    2018-06-03

  • 基于TCP的Socket通信过程

    查看全部
    0 采集 收起 来源:Socket 简介

    2018-06-03

  • 服务器端实现步骤

    1.创建DatagramSocket,指定端口号

    2.创建DatagramPacket

    3.接受客户端发送的数据信息

    4.读取数据


    查看全部
  • 客户端实现

    1.定义发送信息

    2.创建DatagramPacket,包含将要发送的信息

    3.创建DatagramSocket

    4.发送数据

    查看全部
  • Socket通信模型

    查看全部
  • UDP实现多线程通信

    /*UDP服务器端*/
    public class UDPServer {
        public static void main(String[] args) {
            try {
               //创建服务器端DatagramScoket,指定端口
               DatagramSocket socket = new DatagramSocket(8800);
               DatagramPacket packet = null;
               byte[] data = null;
               //记录客户端的数量
               int count = 0;
               System.out.println("服务器端已经启动,等待客户端发送数据");
               while(true){
                   data = new byte[1024];// 创建字节数组,指定接受的数据报的大小
                   packet = new DatagramPacket(data, data.length);
                   socket.receive(packet);
                   UDPServerThread udpServerThread=new UDPServerThread(socket,packet);
                   udpServerThread.start();
                   count++;//统计客户端的数量
                   System.out.println("客户端的数量:"+count);
               }
           } catch (SocketException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
    }
    /*UDP服务器线程处理类*/
    public class UDPServerThread extends Thread {
         // 和本线程相关的Socket
         DatagramSocket socket = null;
         DatagramPacket packet = null; 
         public UDPServerThread(DatagramSocket socket,DatagramPacket packet) {  
             this.socket = socket;  
             this.packet = packet; 
         } 
     
         // 线程执行的操作,响应客户端的请求 
         public void run() {  
             String info = null;  
             InetAddress address = null;  
             DatagramPacket packet2 = null;  
             byte[] data2 = null;  
             int port = 8800;  
             try {   
                 //接收客户端发送的数据   
                 // 读取数据   
                 info = new String(packet.getData(), 0, packet.getLength());   
                 System.out.println("我是服务器,客户端说:" + info);   
             
                 //向客户端响应数据  
                 // 定义客户端的地址、端口号、数据   
                 address = packet.getAddress();   
                 port = packet.getPort();   
                 data2 = "欢迎你!".getBytes();   
                 // 创建数据报,包含响应的数据信息   
                 packet2 = new DatagramPacket(data2, data2.length, address, port);   
                 // 响应客户端   
                 socket.send(packet2);  
                 } catch (SocketException e) {   
                     e.printStackTrace();  
             } catch (IOException e) {   
                 e.printStackTrace();  
             } finally {   
                 // 4.关闭资源   
                 if (socket == null)    
                     socket.close();  
             } 
         }
    }
    /*UDP客户端*/
    public class UDPClient {
        public static void main(String[] args) {
            try {
               //向服务器端发送数据
               //1.定义服务器的地址、端口号、数据
               InetAddress address = InetAddress.getByName("localhost");
               int port = 8800;
               byte[] data = "用户名:admin;密码:123".getBytes();
               //2.创建数据报,包含发送的数据信息
               DatagramPacket packet=new DatagramPacket(data,data.length,address,port);
               //3.创建DatagramSocket对象
               DatagramSocket socket = new DatagramSocket();
               //4.向服务器端发送数据报
               socket.send(packet);
       
               //接收服务器端响应的数据
               //1.创建数据报,用于接收服务器端响应的数据
               byte[] data2 = new byte[1024];
               DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
               //2.接收服务器响应的数据
               socket.receive(packet2);
               //3.读取数据
               String reply = new String(data2,0,packet2.getLength());
               System.out.println("我是客户端,服务器端说:"+reply);
               //4.关闭资源
               socket.close();
           } catch (UnknownHostException e) {
               e.printStackTrace();
           } catch (SocketException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
    }
    查看全部
  • 上传文件的业务分析

    查看全部
  • 如何实现发送文件?
    客户端:
    * 新建文件字节输入流
    * 循环将输入流写入到发送的输出流中

    Socket socket=new Socket("localhost", 8881);
    OutputStream os=socket.getOutputStream();
    		
    File file=new File("e:/Table.java");
    FileInputStream fs=new FileInputStream(file);
    byte[] data=new byte[1024*4];
    int length;
    while((length=fs.read(data))!=-1){
        os.write(data, 0, length);
        os.flush();
    }
    socket.shutdownOutput();
    socket.close();
    os.close();
    fs.close();

    服务器端:
    * 新建文件字节输出流
    * 循环将接收到输入流写入到文件字符输出流

    ServerSocket server =new ServerSocket(8881);
    Socket  socket=server.accept();
    InputStream is=socket.getInputStream();
    File file=new File("e:/153.java");
    FileOutputStream fs=new FileOutputStream(file);
    byte[] data=new byte[1024*4];
    int length;
    while((length=is.read(data))!=-1){
    	fs.write(data, 0, length);
    	fs.flush();
    }
    socket.shutdownInput();
    server.close();
    socket.close();
    is.close();
    fs.close();
    查看全部
  • socket总结

    查看全部
    0 采集 收起 来源:Socket 总结

    2018-05-23

举报

0/150
提交
取消
课程须知
本课程是 Java 开发课程的高级课程,需要对 Java 中的面向对象、IO、多线程,以及网络相关知识有一定的基础
老师告诉你能学到什么?
1、网络相关的基础知识 2、Java 中网络相关 API 的应用 3、实现基于 TCP 的 Socket 编程 4、实现基于 UDP 的 Socket 编程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!