ソケットプログラミングに慣れようとしており、クライアントがWebサイト/ポートに入り、その情報をサーバーに渡すことができるプログラムを書こうとしたサーバーにすべてのページテキストのHTTP Getを実行させ、それを印刷し(サーバー側)、そのテキストを印刷のためにクライアントに戻します(クライアント側)。Java TCPソケットプログラミング - クライアント上で印刷するためにサーバー上に大きな文字列を作成する
これまでは、指定されたWebページサーバー側を読み取り、そのページをStringに入力しようとしていましたが、なんらかの理由で、その文字列のFIRST行がクライアントに返されて何も返されませんelse。私は私が間違って何が起こっているかを100%確実ではないと私は物事のさまざまなトラブルシューティングをしようとしてい
Exception in thread "main" java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.DataOutputStream.writeBytes(Unknown Source)
at assign1.TCPServer15.main(TCPServer15.java:48)
、これはので、このような何かをしようとしている私の最初の時間です:私はまた、このエラーサーバー側を取得します愛のヒント!ここで
クライアント
import java.io.*;
import java.net.*;
class TCPWebClient
{
public static void main(String argv[]) throws Exception
{
String sentence;
String webText;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.print("Enter a single string in the form: server/port. \nExample: (www.google.com/80)\n");
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
webText = inFromServer.readLine();
System.out.println("FROM SERVER:\n" + webText);
clientSocket.close();
}
}
とサーバのための私のコードのためのコードです:私は同じ問題に直面していた
import java.io.*;
import java.net.*;
class TCPServer15
{
public static void main(String argv[]) throws Exception
{
String clientSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true)
{
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
String [] connectionInfo = clientSentence.split("/");
Socket webSocket = new Socket(connectionInfo[0], Integer.parseInt(connectionInfo[1]));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(webSocket.getOutputStream())));
out.println("GET /index.html HTTP/1.0");
out.println();
out.flush();
BufferedReader inFromWeb = new BufferedReader(new InputStreamReader(webSocket.getInputStream()));
String inputLine;
StringBuilder stringBuilder = new StringBuilder();
while ((inputLine = inFromWeb.readLine()) != null)
{
System.out.println(inputLine);
stringBuilder.append(inputLine);
stringBuilder.append("\n");
}
String finalString = stringBuilder.toString();
inFromWeb.close();
outToClient.writeBytes(finalString);
}
}
}