2009-11-18 6 views
2

안녕하세요, 저는 UDP 및 데이터 그램에 약간의 문제가 있습니다. 나는 같은 디렉토리에있는 파일을 보내기 위해 클라이언트로부터 요청을받을 서버를 만들어야한다. 그러면 UDP 서버는이 파일 (비디오)을 가져 와서 데이터 그램에 넣고 전송합니다. 나는 그것을하는 방법을 안다고 생각하지만 파일을 데이터 그램에 넣을 수는 없다. 바이너리 형태로두기 때문에 염두에 두십시오. 편집 :이 방법으로 서버, 그리고 나는 BufferedInputReader과 OutputReader에 문제가 계속 그렇게 마음 :) 내가하지 않은Java에서 데이터 그램을 사용하여 클라이언트에서 서버로 비디오/오디오를 전송 하시겠습니까?

Scanner inFromUser = new Scanner(System.in); 
    int port = 12345; 
    DatagramSocket server = new DatagramSocket(port); 
    // Read name of file supplied by client (must be a line of text): 
    Scanner in = new Scanner(new DataInputStream(server.getInputStream())); 
    String filename = in.nextLine(); 
    DatagramSocket request = server.accept(); 


    // Create buffer, then we're ready to go: 
    // Puts file into binary form 
     BufferedInputStream inbinary = 
       new BufferedInputStream(new FileInputStream("poop.txt")); 
    // Outputs the binary form 
     BufferedOutputStream outbinary = 
       new BufferedOutputStream(request.getOutputStream()); 

    int numbytes; 
    int countblocks = 0; 
    int countbytes = 0; 
    byte[] buf = new byte[1024]; 
    DatagramPacket packet = new DatagramPacket(buf, buf.length, port); 
    server.receive(packet); 

    while ((numbytes = inbinary.read(buf,0,1024)) >= 0) 
    { 
    // receive packet from client, telling it to send the video file 
    server.receive(packet); 
    InetAddress address = packet.getAddress(); 
    packet = new DatagramPacket(buf, buf.length, address, port); 
    server.send(packet); 
    countblocks++;   // keep statistics on file size 
    countbytes += numbytes; 
    outbinary.write(buf,0,numbytes); // write buffer to socket 
    } 
     outbinary.flush(); // FLUSH THE BUFFER 
     server.close(); // done with the socket 
     System.out.println(countblocks + " were read; " + countbytes + " bytes"); 
    } 
    } 

답변

2

에 그 유지 여기

지금까지 내 코드입니다 잠시 동안 데이터 그램을 넣지 만, accept() 호출이 잘못되었다고 확신합니다. 그것은 TCP 서버를위한 것입니다.

나는 일의 훌륭한 튜토리얼에서 cribbing 권 해드립니다 : woops, http://java.sun.com/docs/books/tutorial/networking/datagrams/clientServer.html

+0

나는, 나는 그것을 제거하는 의미 알고 그래 오! –

관련 문제