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

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

难度初级
时长 2小时 0分
学习人数
综合评分9.77
496人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • java的网络支持

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

    2018-08-15

  • socket通信实现步骤

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

    2018-08-15

  • socket通信模型

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

    2018-08-15

  • socket通信

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

    2018-08-15

  • TCP/IP模型

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

    2018-08-14

  • 基于UDP的多线程登陆
    /**
    * 服务器端,实现基于UDP的用户登录 
    * @author Strawberry 
    *
    */
    public class Test006_UDPServer {	
        public static void main(String[] args) throws IOException {
        //创建服务器DatagramSocket,并指定端口		
        DatagramSocket datagramSocket=new DatagramSocket(8800);		
        //创建数据报,用于接收客户端信息		
        byte[] data=new byte[1024];		
        int count=0;		
        System.out.println("***Server start, waiting data from client..***");		
        //开始接收客户端信息		
           while(true){			
              DatagramPacket datagramPacket=new DatagramPacket(data, data.length);			
              datagramSocket.receive(datagramPacket);//此方法在接收到数据报之前会一直阻塞			
              Test006_ServerThread serverThread=new Test006_ServerThread(datagramSocket, datagramPacket);			
              serverThread.start();			
              count++;			
              System.out.println("client connected:"+count);			
              serverThread.sendData();		
           }				
       //关闭资源
       //datagramSocket.close();	
      }
    }
    /** 
    *  线程处理类 
    * @author Strawberry 
    * 
    */
    public class Test006_ServerThread extends Thread{	
      DatagramSocket datagramSocket=null;	
      DatagramPacket datagramPacket=null;		
      
      public Test006_ServerThread(DatagramSocket datagramSocket,DatagramPacket datagramPacket){				
          this.datagramSocket=datagramSocket;		
          this.datagramPacket=datagramPacket;	
      }	
      
      public void run(){			
          //接收客户端信息			
          byte[] data=datagramPacket.getData();			
          String info=new String(data, 0, datagramPacket.getLength());			
          System.out.println("[Info from client]:   "+info);	
      }	
          
      public void sendData(){		
           //响应客户端信息		
          try {			
              InetAddress address=datagramPacket.getAddress();			
              int port=datagramPacket.getPort();			
              String info2="Login Success!";			
              byte[] data2=info2.getBytes();			
              DatagramPacket datagramPacket2=new DatagramPacket(data2, data2.length, address, port);			
              datagramSocket.send(datagramPacket2);		
          } catch (IOException e) {			
              // TODO Auto-generated catch block			
              e.printStackTrace();		
          }	
      }
    }


    查看全部
  • TCP/IP模型

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

    2018-08-09

  • Socket总结:

    Socket通信原理  基于TCP的Socket通信

    经验与技巧:

    多线程的优先级/是否关闭输出流和输入流/使用TCP通信传输对象/socke编程传递文件

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

    2018-08-02

  • 基于UDP客户端实现:

    //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、创建DatagramSocket,指定端口号

    2、创建DatagramPacket

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

    4、读取信息

    服务器端实现步骤

    1、定义发送信息

    2、创建DatagramPacket包含需发送的信息

    3、创建DatagramSocket

    4、发送信息

    服务器端实现:

    //1、创建服务器端DatagramSocket,指定端口

    DatagramSocket socket=new DatagramSocket(8888);

    //2、创建数据报,用于接收客户端发送的数据

    byte[] data=new byte[1024];//创建字节数组,指定接受的数据包的大小

    DatagramPacket packet=new DatagramPacket(data,data.length);

    //3、接收客户端发送的数据

    socket.receive(packet);//此方法在接收到数据包之前会一直阻塞

    //4、读取数据

    String info=new String(data,0,packet.getLength());

    System.out.println("我是服务器,客户端发送信息:"+info);


    查看全部
  • UDP协议(用户数据报协议)是无连接、不可靠、无序的

    UDP协议以数据报作为数据传输载体。进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的Socket(主机地址和端口号),然后再将数据报发送出去

    DatagramPacket:表示数据报包

    DatagramSocket:进行端到端通信的类


    查看全部
    0 采集 收起 来源: DatagramPacket

    2018-08-02

  • 多线程实现多客户端的通信:

    创建服务器线程处理类,传递监听到的客户端Socket,重写run()方法实现读取客户端信息并反馈客户端

    //在服务端中循环监听等待客户端的连接实现多线程

    while(true) {

    //调用accept()监听,等待客户端的连接

    socket=serverSocket.accept();

    //创建一个新的线程

    ServerThread serverThread=new ServerThread(socket);

    //启动线程

    serverThread.start();

    count++;

    System.out.println("客户端数量为:"+count);

    InetAddress address=socket.getInetAddress();

    System.out.println("客户端ip地址为:"+address.getHostAddress());

    }


    查看全部
  • 服务器响应客户端:

    //获取输出流响应客户端请求

    OutputStream os=socket.getOutputStream();

    PrintWriter pw=new PrintWriter(os);//包装成打印流

    pw.println("登陆成功");

    pw.flush();//调用flush()方法将缓冲输出

    //获取输入流,读取服务端的相应信息

    InputStream is=socket.getInputStream();

    BufferedReader br=new BufferedReader(new InputStreamReader(is));

    String info=null;

    while((info=br.readLine())!=null) {

    System.out.println("服务器反馈:"+info);

    }


    查看全部
  • 客户端:

    //1、创建客户端Socket,指定服务器地址和端口

    try {

    Socket socket=new Socket("localhost",8888);

    //2、获取输出流,向服务端发送信息

    OutputStream os=socket.getOutputStream();//字节输出流

    PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流

    pw.write("用户名:admin;密码:123");

    pw.flush();

    socket.shutdownOutput();

    //3、关闭资源

    pw.close();

    os.close();

    socket.close();


    查看全部
  • 服务端:

    //1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口

    try {

    ServerSocket serverSocket=new ServerSocket(8888);

    //2、调用accept()方法开始监听,等待客户端的连接

    System.out.println("  服务器即将启动,等待客户端连接    ");

    Socket socket=serverSocket.accept();

    //3、获取输入流,并读取客户端信息

    InputStream is=socket.getInputStream();

    InputStreamReader isr=new InputStreamReader(is);

    BufferedReader br=new BufferedReader(isr);

    String info=null;

    while((info=br.readLine())!=null) {

    System.out.println("我是服务器,客户端传递信息:"+info);

    }

    socket.shutdownInput();

    //4、关闭服务器端

    is.close();

    isr.close();

    br.close();

    serverSocket.close();


    查看全部

举报

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

微信扫码,参与3人拼团

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

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