데스크탑 서버에서 이미지나, 파일을 보내서 스마트폰에 있는 SD카드에 저장시키려고 합니다.
현재 SD카드에서 데스크탑으로 보내는 소스를 했는데 반대로 하는지는 감이 않잡혀서
어떤 방향쪽으로 가면 좋을까 해서 질문을 드립니다.
=========================================================================
자바서버
package test.server;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
class TCPServer implements Runnable{
public static final int serverPort = 5546;
@Override
public void run(){
try{
System.out.println("대기중..");
ServerSocket serverSocket = new ServerSocket(serverPort);
while(true)
{
Socket sock = serverSocket.accept();
System.out.println("수신중....");
try{
BufferedReader in = new BufferedReader(new
InputStreamReader(sock.getInputStream()));
String str = in.readLine();
System.out.println("수신중인 파일 이름 : " + str);
File f = new File("c:\\down\\", str+".jpg");
FileOutputStream output = new FileOutputStream(f);
byte[] buf = new byte[1024];
while(sock.getInputStream().read(buf)>0)
{
output.write(buf);
output.flush();
}
in.close();
output.close();
System.out.println(str+".jpg 수신완료");
}
catch(Exception e){
System.out.println("서버 에러!!");
e.printStackTrace();
}
finally{
sock.close();
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Thread doit = new Thread(new TCPServer());
doit.start();
}
}
========================================================================
소켓자바
package com.test.client;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Sock extends Activity {
private EditText myet;
private TextView mytv;
private Button mybtn;
public String remsg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myet = (EditText)findViewById(R.id.edit);
mytv = (TextView)findViewById(R.id.text);
mybtn = (Button)findViewById(R.id.sendbtn);
mybtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
if((mybtn.getText().toString() != null)&&
(!mybtn.getText().toString().equals(""))){
TCPClient tp = new TCPClient(myet.getText().toString());
tp.run();
mytv.setText(myet.getText().toString());
myet.setText("");
}
}
});
}
}
====================================================
클라이언트
package com.test.client;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class TCPClient implements Runnable{
private static final String serverIP="192.168.2.2";
private static final int serverPort = 5546;
private String msg;
public TCPClient(String msg){
super();
this.msg = msg;
}
@Override
public void run(){
try{
InetAddress serverAddr = InetAddress.getByName(serverIP);
Socket sock = new Socket(serverAddr, serverPort);
try{
PrintWriter out = new PrintWriter(new BufferedWriter(new
OutputStreamWriter(sock.getOutputStream())), true);
out.println(msg);
out.flush();
DataInputStream dis = new DataInputStream(new
FileInputStream(new File("/mnt/sdcard/"+msg+".png")));
DataOutputStream dos = new
DataOutputStream(sock.getOutputStream());
byte[] buf = new byte[1024];
while(dis.read(buf)>0)
{
dos.write(buf);
dos.flush();
}
dos.close();
}
catch(Exception e){
e.printStackTrace();
}
finally
{
sock.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
여기서 반대로 어떻게 해야할까요