线程socket

package com.aaa;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public static void main(String[] args) throws Exception {

        while (true) {
        ServerSocket ss = new ServerSocket(9527);
        Socket s = ss.accept();
        System.out.println("有人来了");
        // 听筒
        InputStream is = s.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));

        // 话筒
        OutputStream os = s.getOutputStream();
        PrintWriter out = new PrintWriter(os, true);
        
        
            // 读取文件的流
            String fileName = br.readLine();// 读取客户要的文件名
            // 找到文件,如果不存在就告诉客户端
            File file = new File("c:/" + fileName);
            if (file.exists()) {
                BufferedReader readFile = new BufferedReader(new FileReader(
                        file));
                // 读一行文件
                String content = readFile.readLine();
                while (content != null) {
                    out.println(content);// 通过话筒发出文件
                    content = readFile.readLine();// 反复读取所有文件,直到读完
                }

            } else {
                out.println("对不起您请求的文件不存在");
            }
        }
    }

}
package com.aaa;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

public class Client {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        
        InetAddress ia = InetAddress.getByName("192.168.1.58");
        Socket s = new Socket(ia,9527);
        
        //听筒
        InputStream is = s.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        
        //话筒
        OutputStream os = s.getOutputStream();
        PrintWriter out = new PrintWriter(os,true);
        
        //接收文件名的流
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要的文件名");
        String fileName = sc.nextLine();
        
        out.println(fileName);
        
        //因为字符流是逐行读取(serversocket),所以接收的时候也要逐行收
        String content = br.readLine();
        while(content != null){
            System.out.println(content);
            content = br.readLine();
        }
        sc.close();
        out.close();
        os.close();
        br.close();
        is.close();
    }
}

 

posted @ 2012-10-19 11:55  邹晟  阅读(179)  评论(0)    收藏  举报