1
HIクライアントからWebサーバーに書き込む際にJavaで問題が発生します。私は、次のコードを、私は間違っているところServerクラスについてJavaでWebサーバーに書き込む方法
を助けてください
import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStream;
import java.util.Scanner;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Server
{
public static void main(String args[]){
try{
ServerSocket s = new ServerSocket(8080);
System.out.println("ashish");
Socket incoming = s.accept();
System.out.println("the status of the socket="+incoming.isConnected());
InputStream inStream = incoming.getInputStream();
InputStreamReader isr=new InputStreamReader(inStream);
BufferedReader br=new BufferedReader(isr);
String str=null;
while((str=br.readLine()).equals("exit")==false){
System.out.println(str);
}
System.out.println("System exit");
}catch(Exception e){
e.printStackTrace();
}
}
}
そして、実際に今、私は実行時にコード
import java.applet.Applet;
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class testApplet extends Applet
{
public void init(){}
public void start(){
try{
URL url = new URL("http://localhost:8080");
HttpURLConnection httpCon = (HttpURLConnection)url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("PUT");
PrintWriter out = new PrintWriter(httpCon.getOutputStream());
out.print("Resource content\n");
out.print("exit");
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void stop(){}
public void destroy(){}
}
をfolowingているアプレットですクライアントクラス用を使用していますサーバーは次のものだけを表示します
PUT/HTTP/1.1
User-Agent: Mozilla/4.0 (Windows Vista 6.1) Java/1.6.0
Host: localhost:8080
Accept: text/html, image/gif. image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
ただし、 printWriterの出力オブジェクトによって書き込んだネーティブ そして次に待ち状態に入る
一方、アプレットはちょうど開始されていません。そして私は、サーバープログラムを閉じると、アプレットは、次の例外
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at testApplet.start(testApplet.java:19)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
を与える私と一緒に間違っているものを教えてください
私はそれがフォーマットされたコードを持っているのに役立つだろうと思ったが、あなたがそれをしたいならば、あなたのソースコードをインデントしなかった。 –
アプレットはどこでサーバーにデータを送信しようとしますか?クライアントはサーバーがデータを送信するのを待っているようです。 –
私はそれを非常に速く見せる時間がありますが、書き込み呼び出しの後でflush()を呼び出していることはありません。また、 "exit"を書いた後で新しい行を送信していないので、サーバーのreadLine()呼び出しはそれを待っているでしょう。 – jhouse