A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马晓志 于 2014-3-9 16:00 编辑

客户端代码
  1. package com.xiaozhi.jingtian.tcp;  

  2. import java.io.BufferedReader;  
  3. import java.io.BufferedWriter;  
  4. import java.io.FileInputStream;  
  5. import java.io.IOException;  
  6. import java.io.InputStreamReader;  
  7. import java.io.OutputStreamWriter;  
  8. import java.net.Socket;  

  9. public class UploadClient {  

  10.     public static void main(String[] args) throws Exception, IOException {  
  11.         //创建客户端的Socket服务,指定目的主机和端口号  
  12.         Socket socket=new Socket("121.251.158.251",10000);  
  13.          
  14.         BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(new FileInputStream("c://1.txt")));   
  15.         BufferedWriter bufferedWriter= new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));  
  16.          
  17.         String line=null;  
  18.         while((line=bufferedReader.readLine())!=null){  
  19.             bufferedWriter.write(line);  
  20.             bufferedWriter.newLine();  
  21.             bufferedWriter.flush();  
  22.         }  
  23.       
  24.         socket.shutdownOutput();
  25.         
  26.         bufferedReader.close();  
  27.         bufferedWriter.close();  
  28.         socket.close();  
  29.     }  
  30. }  
复制代码


服务端代码
  1. package com.xiaozhi.jingtian.tcp;  

  2. import java.io.BufferedReader;  
  3. import java.io.BufferedWriter;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.InputStreamReader;  
  9. import java.io.OutputStreamWriter;  
  10. import java.net.ServerSocket;  
  11. import java.net.Socket;  

  12. import javax.xml.crypto.Data;  

  13. public class UploadServer {  

  14.     public static void main(String[] args) throws Exception {  
  15.         //创建服务端的Socket服务,指定端口号  
  16.         ServerSocket serverSocket=new ServerSocket(10000);  
  17.          
  18.         while(true){  
  19.             //通过accept方法获取连接过来的Socket对象  
  20.             Socket socket=serverSocket.accept();  
  21.             new MyThread(socket).start();  
  22.         }  
  23.          
  24.     }  
  25. }  

  26. class MyThread extends Thread{  
  27.     private Socket socket;  
  28.       
  29.     public MyThread(Socket socket) {  
  30.         this.socket = socket;  
  31.     }  

  32.     @Override  
  33.     public void run() {  
  34.         try {  
  35.             System.out.println(socket.getInetAddress().getHostAddress()+"上传文件");  
  36.             BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  37.             BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c://"+System.currentTimeMillis()+".txt")));  
  38.               
  39.             String line=null;  
  40.             while((line=bufferedReader.readLine())!=null){  
  41.                 bufferedWriter.write(line);  
  42.                 bufferedWriter.newLine();  
  43.                 bufferedWriter.flush();  
  44.             }  
  45.               
  46.             System.out.println("上传成功");

  47.             bufferedReader.close();  
  48.             bufferedWriter.close();  
  49.             socket.close();  
  50.         } catch (FileNotFoundException e) {  
  51.             e.printStackTrace();  
  52.         } catch (IOException e) {  
  53.             e.printStackTrace();  
  54.         }  
  55.     }  
  56. }  
复制代码
看毕老师的视频,说没有这行代码 socket.shutdownOutput();,客户端服务端会互相等待,因为没有结束标志-1.
可是我这里没有这行代码并没有出现互相等待的现象???

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马