BBS > java

소켓으로 파일 받기(안됨)

작성자 : 이창우 (x1wins) | 등록일 : 2011-06-07 | 목록
첨부 파일이 없습니다.
첨부 이미지가 없습니다.
package server.file;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
 
public class EchoThread extends Thread {
 
    private Socket socket;
    private HashMap pwMap;
    private HashMap useridMap;
    private int id;
    PrintWriter pw;
    BufferedReader br;
 
    public EchoThread(Socket socket, HashMap pwMap, int id) {
 
        this.socket = socket;
        this.pwMap = pwMap;
        this.id = id;
 
    }
 
    public void run() {
 
        try {
 
            InetAddress inetAddress = socket.getInetAddress();
            // System.out.println("=============connecting=============");
            // System.out.println(inetAddress.getHostAddress());
            // System.out.println(inetAddress.getHostName());
            // System.out.println("=============connected==============");
 
            OutputStream out = socket.getOutputStream();
            InputStream in = socket.getInputStream();
 
            pw = new PrintWriter(new OutputStreamWriter(out));
            br = new BufferedReader(new InputStreamReader(in));
 
            synchronized (pwMap) {
                pwMap.put(id, pw);
                String message = id + " come in " + " "
                        + inetAddress.getHostAddress() + " "
                        + inetAddress.getHostName();// 메세지 만들어냄
                sendingMessageToAllUser(message);
            }           
 
            /* 받은 메세지가 있을 경우 사용자들 소켓에게 메세지 보내기 */
            String line = null;
            while ((line = br.readLine()) != null) {
            	
            	//
            	FileWriter fw = new FileWriter("test.txt", true);
            	fw.write(line);
            	fw.close();
            
            }
            /* 받은 메세지가 있을 경우 사용자들 소켓에게 메세지 보내기 */
 
             
        } catch (Exception e) {
            System.out.println(e);
        } finally {
 
            try {
 
                /* 연결종료 */
                String message = id + " socket close!!! bye~~~";
                sendingMessageToAllUser(message);
                pw.close();
                br.close();
                socket.close();
 
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
 
        }
 
    }
 
    void sendingMessageToAllUser(String message) {
 
        System.out.println(message);// 모니터링을 위해서 server 콘솔에 찍힘
 
        synchronized (pwMap) {
            Collection collection = pwMap.values();
            Iterator iter = collection.iterator();
            while (iter.hasNext()) {
 
                // 사용자 겟수만큼 루프 돔
                // 모든사용자에게 보냄
                PrintWriter pwAll = (PrintWriter) iter.next();
                pwAll.println(message);
                pwAll.flush();
 
            }
        }
    }
 
}
package server.file;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
  
  
public class EchoThreadServer {
    public static void main(String[] args) {
  
        try{
              
            int port = Integer.parseInt(args[0]);
            ServerSocket serverSocket = new ServerSocket(port);
            HashMap pwMap = new HashMap();
            HashMap useridMap = new HashMap();
            int id = 0;
              
            while(true){
                Socket socket = serverSocket.accept();
                EchoThread echoTread = new EchoThread(socket, pwMap, id);
                echoTread.start();
                id++;
                  
            }
          
        }catch(Exception e){
            System.out.println(e);
        }
          
    }
  
}
ㅇㅇㅋ
로그인 하셔야 댓글을 사용하실수 있습니다.
댓글쓰기를 누르면 로그인 페이지로 이동 후 돌아옵니다.
총 댓글 겟수 0
번호 제목 등록일 작성자 조회수
671 struts2 intercept (0) 2014-12-29 이창우 1556
670 Reflection (0) 2014-07-07 이창우 1991
665 Timestamp <-> Date (0) 2014-04-02 이창우 2160
664 변환 date ->java.sql.date (0) 2014-03-24 이창우 2035
663 Unparseable date: "" (0) 2014-03-24 이창우 2955
659 Java Primitive Data Types (0) 2014-02-14 이창우 2424
568 abstract interface 차이점 (0) 2012-09-24 이창우 1350
418 Triple DES & DES JAVA ,C (0) 2011-12-26 이창우 2758
403 HttpClient (0) 2011-12-10 이창우 2600
220 콘솔에서 war 만들기 (0) 2011-07-13 이창우 3115
210 servlet 현재 주소 알아오기 (0) 2011-07-09 이창우 2265
188 A Java Runtime (0) 2011-06-27 이창우 2194
173 file 복사 (0) 2011-06-07 이창우 2046
172 파일 받기 (수정) (0) 2011-06-07 이창우 2294
170 파일 받기 (안됨) (0) 2011-06-07 이창우 1830
-> 소켓으로 파일 받기(안됨) (0) 2011-06-07 이창우 2055
162 RCP Example (0) 2011-06-03 이창우 1888
161 rcp 설명 사이트 (1) 2011-06-03 이창우 2125
160 Thread Chatting 프로토 타입 2 (1) 2011-06-02 이창우 1741
158 object heap (0) 2011-06-01 이창우 1971
< 1 2 >
글쓰기 검색