当前位置: 首页 > 知识库问答 >
问题:

TCP不起作用的Java套接字编程

章禄
2023-03-14
run:
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    at socketserver.SocketServer.main(SocketServer.java:38)
Java Result: 1
    null
package socketclient;

import java.io.*; 
import java.net.*; 
import java.util.Scanner;


public class SocketClient {

    /**
     * @param args the command line arguments
     */
   public static void main(String args[]) throws Exception 
    { 
        double inputDouble; 
        double modifiedNum; 

        Scanner inFromUser = new Scanner(System.in);


        Socket clientSocket = new Socket("localhost", 6789); 

        DataOutputStream outToServer = 
          new DataOutputStream(clientSocket.getOutputStream());


          Scanner inFromServer = new Scanner(clientSocket.getInputStream());


        inputDouble = inFromUser.nextDouble(); 

        outToServer.writeDouble(inputDouble);


        modifiedNum = inFromServer.nextDouble(); 

        System.out.println("FROM SERVER: " + modifiedNum); 

        outToServer.close(); 
        clientSocket.close();

    } 

}
package socketserver;

import java.io.*; 
import java.net.*; 
import java.util.Scanner;


public class SocketServer {

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) throws Exception 
    { 
      double clientNum; 
      double roundedNum;

      ServerSocket welcomeSocket = new ServerSocket(6789); 

      while(true) { 

            Socket connectionSocket = welcomeSocket.accept(); 

            Scanner inFromClient = new Scanner(connectionSocket.getInputStream());


            DataOutputStream  outToClient = 
             new DataOutputStream(connectionSocket.getOutputStream()); 

           clientNum = inFromClient.nextDouble(); 


           roundedNum= Math.round(clientNum);


           outToClient.writeDouble(roundedNum); 
        } 
    } 


}

共有1个答案

殳宸
2023-03-14

您的错误是使用scanner从服务器读取客户端发送的数据,反之。

使用DataOutputStream发送Double,因此需要DataInputStream来读取Double;两边都是。

InputFromServerInputFromClient扫描程序更改为DataInputStream。此外,不要忘记刷新输出,并关闭结束时的流。

 类似资料:
  • 我使用这段代码通过JAVA运行简单的TCP服务器,并使用Socket协议android应用程序作为客户端。问题是,当客户端连接时,我会发送消息,服务器端什么都不做,直到我断开客户端的连接,之后会出现消息。我认为在while((inputLine=in.readLine())!=空)

  • 创建套接字并建立连接后,我使用BufferedReader和PrintWriter从套接字进行写/读操作。 当我用完插座后,我就把它关上。 这将导致发送一个TCP fin,并留下一个半开的传输控制协议。有什么方法可以检测客户端/服务器是否关闭了连接?

  • 问题内容: 我一直在编写一个有趣的小程序,该程序在Linux上的C语言中通过TCP传输文件。该程序从套接字读取文件并将其写入文件(反之亦然)。我最初使用读/写并且程序可以正常工作,但是后来我了解了拼接技术,并想尝试一下。 当我从stdin(重定向文件)读取并写入TCP套接字时,我用splice编写的代码可以完美地工作,但是当从套接字读取并写入stdout时,将spr将errno设置为EINVAL会

  • 问题内容: 我正在研究并尝试制作一个简单的应用程序。这是代码: 编辑: 我的错,抱歉,但主要问题仍然存在。这是更正的代码: 但是,当我尝试启动它时,出现以下错误: 这可能是什么原因? UPD: 这是其余的痕迹: 问题答案: 这可能是什么原因? 的原因是您尚未向程序传递任何参数。因此,不会引用有效的数组索引(顺便说一句:我将创建一个单独的局部变量,而不是分配给该数组。从技术上讲,这是可能的,但我不会

  • 问题内容: 我正在使用Java套接字构建一个简单的客户端/服务器应用程序,并尝试使用ObjectOutputStream等。 我一直在这个URL http://java.sun.com/developer/technicalArticles/ALT/sockets上关注该教程,当它谈到通过套接字传输对象时,它从一半开始。 请参阅我为客户端提供的代码http://pastebin.com/m37e4

  • 我想从Java应用程序通过套接字发送一个简单的。我的问题是,如果不在的末尾添加'\n',编写就不起作用。我必须添加这个“\n”还是有更优雅的解决方案? 这是我的代码: