tcp通信程序练习6——多线程实现文件上传(代码片段)

pxy-1999 pxy-1999     2022-12-04     729

关键词:

技术图片

客户端代码:

public class ClientDemo 
    public static void main(String[] args) throws IOException 
        //创建客户端Scoket对象
        Socket s= new Socket("192.168.50.76",44444);

        //封装文本文件数据
        BufferedReader br = new BufferedReader(new FileReader("myNet\\InetAddressDemo.java"));

        //输出流
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        String line;
        while ((line = br.readLine())!=null)
            bw.write(line);
            bw.newLine();
            bw.flush();
        

        //使输出终止
        s.shutdownOutput();

        //客户端接收反馈
        BufferedReader brClient = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String data = brClient.readLine();
        System.out.println("服务器的反馈:"+data);

        //释放资源
        s.close();
        br.close();
    

服务器端代码:

public class ServerDemo 
    public static void main(String[] args) throws IOException 
        //创建客户端Socket对象
        ServerSocket ss = new ServerSocket(44444);

        //为每一个客户端开启一个线程
        while (true) 
            //监听客户端连接
            Socket s = ss.accept();

            new Thread(new ServerThread(s)).start();
        

    

实现Runnable接口的SeverThread类:

public class ServerThread implements Runnable
    private Socket s;
    public ServerThread(Socket s) 
        this.s=s;
    

    @Override
    public void run() 
        //接受数据写入到文件
        try 
            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

            //解决名称冲突问题
            int count = 0;
            File file = new File("myNet\\Copy["+count+"].java");
            while (file.exists())
                count++;
                file = new File("myNet\\Copy["+count+"].java");
            
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            String line;
            while ((line=br.readLine())!=null)
                bw.write(line);
                bw.newLine();
                bw.flush();
            

            //给出反馈
            BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            bwServer.write("文件上传成功");
            bwServer.newLine();
            bwServer.flush();

        catch (IOException e)
            e.printStackTrace();
        
    

运行结果:客户端程序每上传一次文件,服务器都会给出一次反馈

技术图片

技术图片

网络编程——java(代码片段)

网络编程1、什么是计算机网络2、网络通信的两个要素3、IP地址4、端口Port5、通信协议6、TCP实现聊天7、TCP文件上传实现8、初识Tomcat9、UDP消息发送10、UDP聊天实现11、UDP多线程在线咨询12、URL下载网络资源1、什么是计算机网络什... 查看详情

javase-21.3.2tcp通信程序练习1(代码片段)

1packageday12.lesson3.p1;23importjava.io.IOException;4importjava.io.InputStream;5importjava.io.OutputStream;6importjava.net.Socket;78/*93.3TCP通信程序练习110案例需求11客户端:发送数据,接受服务器反馈12服务器:收到消息后给出反馈13案例分析14客户端创 查看详情

python网络编程--tcp/ip

...当中,方便对比服务端与客户端的不同。TCP/IP是因特网的通信协议,其参考OSI模型,也采用了分层的方式,对每一层制定了相应的标准。网际协议(IP)是为全世界通过互联网连接的计算机赋予统一地址系统的机制,它使得数据... 查看详情

102.tcp实现多线程连接与群聊(代码片段)

...的关系socket在哪socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部... 查看详情

多线程核心知识(代码片段)

...join使线程阻塞住。  死亡:run方法运行完毕。多线程通信yieldyield()让出线程时间片,增大线程切换的几率。由于它是native修饰的,所以是通过其他语言直接操作机器实现的。publicstaticnativevoidyield();sleepsleep(longmillis)会让线程阻... 查看详情

6-4线程练习题:多线程爬虫(代码片段)

编写多线程爬虫如何使用Python的threading模块1.请你使用python的threading模块2.要求1:该类可以传入最大线程数和需要抓取的网址列表3.要求2:该类可以通过继承的方式提供一个处理response的方法 查看详情

网络编程tcp/ip协议-----多进程多线程服务器(代码片段)

1、前言上一篇已经实现了服务器端与客户端之间最基础通信,但存在一些问题,最大的问题是上篇中一个服务器端只能连接一个客户端,如何让一个服务器端可以连接多个客户端呢?利用多进程多线程实现。2、... 查看详情

boost::asio::ip::tcp实现网络通信的小例子(代码片段)

...一直等客户端连进来,连上以后再通过这个socket与客户端通信,而所有的通信都是以阻塞方式进行的,读完或写完才会返回。在客户端也一样,这时我会拿着socket去连接服务器,当然也是连上或出错了才返回,最后也是以阻塞的... 查看详情

linux网络编程基础及多线程并发案例(代码片段)

...listenaccept7.客户端基本函数  connect8.send和recv 8.多线程9.通信流程10.多线程并发样例程序 1.ip:端口 TCP/IP协议    AF_INET     查看详情

模拟售票程序(关于多线程共享的练习)

继承Tread来实现多线程的话,写出的类就是Thread的一个子类,所以用这个自定义类产生的对象就是一个线程;而通过实现Runnable实现类来实现多线程,还要声明一个Thread类的对象,将这个Runnable实现类的对象传入Thread类的一个构造... 查看详情

java多线程(详细了解java多线程机制)(代码片段)

...例5.2同步代码块5.3同步方法5.4Lock锁5.5线程死锁六、线程通信问题6.1wait()和wait(longtimeout)6.2notify()和notifyAll()6.3生产者和消费者问题一、程序、进程、线程1.1什么是程序程序(program):是为完成特定任务、用某种语言编写的一组指... 查看详情

网络编程案例多任务版tcp服务端程序开发(代码片段)

案例-多任务版TCP服务端程序开发案例-多任务版TCP服务端程序开发1.需求2.具体实现步骤3.多任务版TCP服务端程序的示例代码4.小结模拟QQ聊天-客户端模拟QQ聊天-服务端案例-多任务版TCP服务端程序开发学习目标能够说出多任务版TCP... 查看详情

java多线程-管道流实现线程间通信(代码片段)

...入管道流中读取数据。通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西。字节流PipedInputStream和PipedOutputStream字符流PipedReader和Pip 查看详情

狂神说java笔记--网络编程部分笔记(代码片段)

...;有的知识点并没有整理进来.ml1.什么是计算机网络2.网络通信的两个要素3.IP地址4.port:端口5.通信协议6.TCP实现聊天7.TCP文件上传实现8.UDP消息发送9.UDP实现聊天10.UDP实现聊天(两边都可以发送接收消息)1.什么是计算机网络计算机网络... 查看详情

多线程练习题

多线程练习题编写程序实现,子线程循环3次,接着主线程循环5次,接着再子线程循环3次,主线程循环5次,如此反复,循环3次第一种实现方式:使用synchronized关键字?packagecom.aaa.test;?publicclassTest1? privatebooleanflag=false;?// 主线程要实... 查看详情

第四次过程性考核(代码片段)

第四次过程性考核——多线程通信码云仓库地址:https://gitee.com/smr_777/16012021_assessment_iv/tree/master使用套接写连接编写一个简单的聊天室程序,客户端主函数放在Client_Main.java文件中,服务器端主函数放在Server_Main.java文件中 要... 查看详情

java多线程:线程间通信方式(代码片段)

文章目录Java线程通信wait()、notify()、notifyAll()API说明实现原理代码实现await()、signal()、signalAll()API说明实现原理代码实现BlockingQueueAPI说明实现原理代码实现Java线程通信在Java中线程通信主要有以下三种方式:wait()、notify()、noti... 查看详情

java多线程:线程间通信方式(代码片段)

文章目录Java线程通信wait()、notify()、notifyAll()API说明实现原理代码实现await()、signal()、signalAll()API说明实现原理代码实现BlockingQueueAPI说明实现原理代码实现Java线程通信在Java中线程通信主要有以下三种方式:wait()、notify()、noti... 查看详情