上一次的用的套接字如果不受到数据就会有阻塞

我们可以使用多线程技术,把数据发过去,由服务器端的线程来操作,一个线程操作一个发过去的数据,然后发回来,不会阻塞客户端

套接字的多线程技术

测试代码

客户端

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URL;
import java.util.Scanner;

public class Test {
    public static void main(String args[]){
        DataInputStream in=null;
        DataOutputStream out=null;
        Socket socket1 = null;
        InetAddress ip = null;
        Read read1=null;
        Thread thread1;
        try{
            read1=new Read();
            thread1=new Thread(read1);
//            ip=InetAddress.getByName("127.0.0.1");
//            InetSocketAddress ip2=new InetSocketAddress(ip,2010);
//            System.out.println("3333");
//            if(socket1.isConnected()){}
//            else{
//                    System.out.println("3333");
//                    socket1.connect(ip2);
//                    System.out.println("222");
                    socket1=new Socket("127.0.0.1",2017);
                    in=new DataInputStream(socket1.getInputStream());
                    out=new DataOutputStream(socket1.getOutputStream());
                    read1.setInputStream(in);
                    thread1.start();
//            }
        }
        catch(Exception e){
            System.out.println("111");
            System.out.println(e.getMessage());
        }
        Scanner scanner1=new Scanner(System.in);
        for(;scanner1.hasNext();){
            double r=scanner1.nextDouble();
            try{
                out.writeDouble(r);
            }
            catch(Exception e){
                System.out.println(e.getMessage());
                System.out.println("444");
            }
        }
    }
}

class Read implements Runnable{
    private URL url;
    private DataInputStream in1;
    void setInputStream(DataInputStream a){
        in1=a;
    }
    public void run(){
        double result=0;
        for(;;){
            try{
                result=in1.readDouble();
                System.out.println("受到了"+result);
            }
            catch(Exception e){
                System.out.println("333");
                System.out.println(e.getMessage());
            }
        }
    }
}
View Code

相关文章:

  • 2021-12-25
  • 2021-07-01
  • 2021-07-07
  • 2022-12-23
  • 2021-12-16
  • 2021-05-30
  • 2021-05-21
  • 2021-09-12
猜你喜欢
  • 2021-11-17
  • 2021-12-25
  • 2022-12-23
  • 2021-06-16
  • 2021-12-25
  • 2021-12-25
  • 2021-12-25
相关资源
相似解决方案