私はクライアントサーバーを作っています。サーバーはハードコードされたファイルを送信できますが、クライアントは指定されていません。テキストファイルのみを送信する必要があります。私が理解している限り、クライアントは最初にファイル名を送信し、次にサーバーがそれを送信します。複雑なことは何もありませんが、あらゆる種類のエラーが発生しています。このコードは接続リセット/ソケットクローズエラーを取得しています。主な問題は、ネットワーキングを研究する時間があまりなかったことです。
私が得ることができるどんな助けにも感謝します。
編集。 回避策を見つけました。ストリームを閉じるとソケットが閉じます。なぜですか? あってはならないことですよね?
サーバ側:
InputStream sin=newCon.getInputStream();
DataInputStream sdata=new DataInputStream(sin);
location=sdata.readUTF();
//sdata.close();
//sin.close();
File toSend=new File(location);
byte[] array=new byte[(int)toSend.length()];
FileInputStream fromFile=new FileInputStream(toSend);
BufferedInputStream toBuffer=new BufferedInputStream(fromFile);
toBuffer.read(array,0,array.length);
OutputStream out=newCon.getOutputStream(); //Socket-closed...
out.write(array,0,array.length);
out.flush();
toBuffer.close();
newCon.close();
クライアント側:
int bytesRead;
server=new Socket(host,port);
OutputStream sout=server.getOutputStream();
DataOutputStream sdata=new DataOutputStream(sout);
sdata.writeUTF(interestFile);
//sdata.close();
//sout.close();
InputStream in=server.getInputStream(); //socket closed..
OutputStream out=new FileOutputStream("data.txt");
byte[] buffer=new byte[1024];
while((bytesRead=in.read(buffer))!=-1)
{
out.write(buffer,0,bytesRead);
}
out.close();
server.close();