2台のAndroidデバイス間の通信を確立したい. サーバーからクライアントへ (サーバーを介して) 方法論を使用します。したがって、一般的に、ファイルをサーバー(PC)に送信してから、サーバー上のファイルを取得して他のデバイスに送信することを考えていました。それで、私は2番目の部分に取り組んでいて、PCからAndroidにファイルを送信しようとしていました. しかし、何らかの理由でクライアントがサーバーに接続できません。これが私のコードです。
public class TCPServer extends Thread {
public static final int SERVERPORT = 8901;
public static void main() {
try {
System.out.println("S: Connecting...");
ServerSocket serverSocket = new ServerSocket(SERVERPORT);
System.out.println("S: Socket Established...");
Socket client = serverSocket.accept();
System.out.println("S: Receiving...");
ObjectOutputStream put = new ObjectOutputStream(
client.getOutputStream());
String s = "adios.wav";
String str = "C:/";
String path = str + s;
System.out.println("The requested file is path: " + path);
System.out.println("The requested file is : " + s);
File f = new File(path);
if (f.isFile()) {
FileInputStream fis = new FileInputStream(f);
byte[] buf = new byte[1024];
int read;
while ((read = fis.read(buf, 0, 1024)) != -1) {
put.write(buf, 0, read);
put.flush();
}
System.out.println("File transfered");
client.close();
serverSocket.close();
fis.close();
}
} catch (Exception e) {
System.out.println("S: Error");
e.printStackTrace();
} finally {
}
}
}
そしてクライアント。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Socket s = null;
BufferedInputStream get = null;
try {
s = new Socket("192.168.198.1", 8901);
get = new BufferedInputStream(s.getInputStream());
int u;
String str = "/mnt/sdcard/ad.wav";
FileOutputStream fs = new FileOutputStream(new File(str));
byte jj[] = new byte[1024];
while ((u = get.read(jj, 0, 1024)) != -1) {
fs.write(jj, 0, u);
}
fs.close();
System.out.println("File received");
s.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
}