网络编程

tcp客户端

package cn.itcast.tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Demo1_Client {

    /**
     * 1.客户端
     * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
     * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
     * 输入流可以读取服务端输出流写出的数据
     * 输出流可以写出数据到服务端的输入流
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        //demo1();
        Socket socket = new Socket("127.0.0.1", 9999);          //创建Socket
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//对输入流封装
        PrintStream ps = new PrintStream(socket.getOutputStream());//对输出流封装

        System.out.println(br.readLine());                      //读取服务器的内容并打印
        ps.println("sss");                              //向服务器写出数据
        System.out.println(br.readLine());
        ps.println("ssss");

        socket.close();
    }

    public static void demo1() throws UnknownHostException, IOException {
        Socket socket = new Socket("127.0.0.1", 9999);          //创建Socket
        InputStream is = socket.getInputStream();               //获取输入流
        OutputStream os = socket.getOutputStream();             //获取输出流

        byte[] arr = new byte[1024];                            //创建字节数组
        int len = is.read(arr);                                 //将数据读取到字节数组中
        System.out.println(new String(arr,0,len));              //转换成字符串

        os.write("ssss?".getBytes());                       //将字符串转换成字节数组写到服务器去

        byte[] arr2 = new byte[1024];
        int len2 = is.read(arr2);
        System.out.println(new String(arr2,0,len2));

        socket.close();
    }

}

tcp服务器

package cn.itcast.tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Demo1_Server {

    /**
     * 2.服务端
     * 创建ServerSocket(需要指定端口号)
     * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
     * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
     * 输入流可以读取客户端输出流写出的数据
     * 输出流可以写出数据到客户端的输入流
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //demo1();
        //demo2();
        ServerSocket server = new ServerSocket(9999);           //创建服务器

        while(true) {
            final Socket socket = server.accept();                  //接收客户端的请求
            new Thread() {
                public void run() {
                    try {
                        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//对输入流包装
                        PrintStream ps = new PrintStream(socket.getOutputStream());//对输出流包装

                        ps.println("aaaaa");                                //向客户端写出数据
                        System.out.println(br.readLine());                      //读取并打印
                        ps.println("aaaaaa");                                       //向客户端再次写出数据
                        System.out.println(br.readLine());                      //读取并打印

                        socket.close();
                    } catch (IOException e) {

                        e.printStackTrace();
                    }
                }
            }.start();
        }
    }

    public static void demo2() throws IOException {
        ServerSocket server = new ServerSocket(9999);           //创建服务器
        Socket socket = server.accept();                        //接收客户端的请求

        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//对输入流包装
        PrintStream ps = new PrintStream(socket.getOutputStream());//对输出流包装

        ps.println("aaaa");                             //向客户端写出数据
        System.out.println(br.readLine());                      //读取并打印
        ps.println("aaaaa");                                        //向客户端再次写出数据
        System.out.println(br.readLine());                      //读取并打印

        socket.close();
    }

    public static void demo1() throws IOException {
        ServerSocket server = new ServerSocket(9999);           //创建服务器
        Socket socket = server.accept();                        //接收客户端的请求

        InputStream is = socket.getInputStream();               //获取输入流
        OutputStream os = socket.getOutputStream();             //获取输出流

        os.write("aaaa".getBytes());                        //将字符串写到客户端

        byte[] arr = new byte[1024];                            //创建字节数组
        int len = is.read(arr);                                 //将数据读取到字节数组中
        System.out.println(new String(arr,0,len));              //将数组转换为字符串

        os.write("aaa".getBytes());                     //将字符串写到客户端

        server.close();
        socket.close();
    }

}

UDP获取数据

package cn.itcast.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class Demo1_Receive {

    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(12345);                  
        DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);   
        socket.receive(packet);

        byte[] arr = packet.getData();                                      
        int len = packet.getLength();                                       
        System.out.println(new String(arr,0,len));

        socket.close();
    }

}

UDP发送数据

package cn.itcast.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Demo1_Send {

    public static void main(String[] args) throws IOException {
        String str = "红鲤鱼与绿鲤鱼与驴";                                   
        DatagramSocket socket = new DatagramSocket();                   
        DatagramPacket packet =                                         
                new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 12345);
        socket.send(packet);                                            
        socket.close();
    }

}

#

内容概要:本文详细介绍了扫描单分子定位显微镜(scanSMLM)技术及其在三维超分辨体积成像中的应用。scanSMLM通过电调透镜(ETL)实现快速轴向扫描,结合4f检测系统将不同焦平面的荧光信号聚焦到固定成像面,从而实现快速、大视场的三维超分辨成像。文章不仅涵盖了系统硬件的设计与实现,还提供了详细的软件代码实现,包括ETL控制、3D样本模拟、体积扫描、单分子定位、3D重建和分子聚类分析等功能。此外,文章还比较了循环扫描与常规扫描模式,展示了前者在光漂白效应上的优势,并通过荧光珠校准、肌动蛋白丝、线粒体网络和流感A病毒血凝素(HA)蛋白聚类的三维成像实验,验证了系统的性能和应用潜力。最后,文章深入探讨了HA蛋白聚类与病毒感染的关系,模拟了24小时内HA聚类的动态变化,提供了从分子到细胞尺度的多尺度分析能力。 适合人群:具备生物学、物理学或工程学背景,对超分辨显微成像技术感兴趣的科研人员,尤其是从事细胞生物学、病毒学或光学成像研究的科学家和技术人员。 使用场景及目标:①理解和掌握scanSMLM技术的工作原理及其在三维超分辨成像中的应用;②学习如何通过Python代码实现完整的scanSMLM系统,包括硬件控制、图像采集、3D重建和数据分析;③应用于单分子水平研究细胞内结构和动态过程,如病毒入侵机制、蛋白质聚类等。 其他说明:本文提供的代码不仅实现了scanSMLM系统的完整工作流程,还涵盖了多种超分辨成像技术的模拟和比较,如STED、GSDIM等。此外,文章还强调了系统在硬件改动小、成像速度快等方面的优势,为研究人员提供了从理论到实践的全面指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值