写入套接字Java不会';我不能正常工作
所以我得到了一个Server.jar文件,它运行一个tic-tac-toe服务器。 我现在要做的是通过TCP套接字和 发送HTTP请求(例如“GET/game/HTTP/1.1”),并接收TictaToe字段 现在我似乎能够连接到服务器,并发送第一个请求。 然而,我的第二个out.write似乎被忽略或导致异常。 我不明白为什么。。。服务器似乎也没有响应第二条消息/请求写入套接字Java不会';我不能正常工作,java,sockets,networking,communication,bufferedwriter,Java,Sockets,Networking,Communication,Bufferedwriter,所以我得到了一个Server.jar文件,它运行一个tic-tac-toe服务器。 我现在要做的是通过TCP套接字和 发送HTTP请求(例如“GET/game/HTTP/1.1”),并接收TictaToe字段 现在我似乎能够连接到服务器,并发送第一个请求。 然而,我的第二个out.write似乎被忽略或导致异常。 我不明白为什么。。。服务器似乎也没有响应第二条消息/请求 Socket sock; try { sock = new Soc
Socket sock;
try
{
sock = new Socket("127.0.0.1",8080);
System.out.println("Connection established at "+sock.toString());
Scanner in = new Scanner(sock.getInputStream());//Step 2.
PrintWriter out =new PrintWriter(sock.getOutputStream(),true);//Step 2.
out.println("GET /game/ HTTP/1.1\nHost: 127.0.0.1\nConnection: keep-alive\n\n");
String test ="";
while( (in.hasNext())== true)
{
test = test + in.nextLine();
}
System.out.println(test);
//This one is ignored somehow.
out.println("GET /game/gamenumber HTTP/1.1\nHost: 127.0.0.1\n\n");
while( (in.hasNext())== true)
{
test = test + in.nextLine();
}
System.out.println(test);
out.close();
sock.close();
}
catch (IOException e)
{
System.out.println("Failed");
e.printStackTrace();
}
注意:我没有直接访问服务器源代码的权限,并且不允许使用HTTPURLCONNECTION。尝试在每次println之后添加out.flush()
java.net.SocketException:软件导致的连接中止:套接字写入错误 这通常是由于写入另一端已关闭的连接而导致的。由于您没有发送内容长度头,服务器在第一次请求后关闭了连接 HTTP中的行终止符是\r\n,而不是\n
您需要仔细了解HTTP 1.1协议RFC。或者使用HttpURLConnection,它将完全为您提供服务。除非这是一个家庭作业,而且您必须自己实现HTTP 1.1(这似乎很奇怪),否则拒绝您使用JDK中的一个类也是很奇怪的,而这个类实际上正是针对这个问题设计的。“或导致异常”-那么它是否会导致异常?如果是这样,请发布stacktrace(请显示您的
捕获
块…java.net.SocketException:软件导致的连接中止:套接字写入错误您应该使用扫描仪
和PrintWriter
,这更容易处理。(甚至是HttpURLConnection类)不,我必须在没有HTTP URL连接类的情况下完成这项工作…您的服务器可以通过web浏览器访问吗?(1)添加刷新无法解决“套接字写入错误”。(2)如果这是问题,它根本无法工作。(3)他在自动刷新模式下使用PrintWriter,因此额外的刷新()不会起任何作用。-1