java--socket编程,报错为 java.net.SocketInputStream.read(Unknown Source),怎么回事啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java--socket编程,报错为 java.net.SocketInputStream.read(Unknown Source),怎么回事啊?相关的知识,希望对你有一定的参考价值。

服务器代码:public class Server
public static void main(String args [])
ServerSocket server=null;
Socket client=null;
System.out.println("2号位置");
while(true)
try
server=new ServerSocket(2014);
System.out.println("1号位置");
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

try
client=server.accept();
System.out.println("3号位置");
catch (IOException e1)
// TODO Auto-generated catch block
e1.printStackTrace();

if(client!=null)
new ServerThread(client).start();
System.out.println("4号位置");

try
server.close();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();






class ServerThread extends Thread
Socket socket;
DataOutputStream out=null;
DataInputStream in=null;
String s;
ServerThread(Socket s)
socket=s;
try
out=new DataOutputStream(socket.getOutputStream());
in=new DataInputStream(socket.getInputStream());
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();


public void run()
while(true)
try
double r=in.readDouble(); //就是这一行报的错
double area=Math.PI*r*r;
out.writeDouble(area);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();



重新运行一次后,报错的位置又变了

参考技术A public class Server
public static void main(String args [])
ServerSocket server=null;
Socket client=null;
System.out.println("2号位置");
while(true)
try
//你在这里new serverSocket也就是说每次有客户端连接都会申请新的端口2014;
//你试过有两个客户端连接的时候会不会报错?
server=new ServerSocket(2014);
System.out.println("1号位置");
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

try
client=server.accept();
System.out.println("3号位置");
catch (IOException e1)
// TODO Auto-generated catch block
e1.printStackTrace();

if(client!=null)
new ServerThread(client).start();
System.out.println("4号位置");

try
server.close();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();






class ServerThread extends Thread
Socket socket;
DataOutputStream out=null;
DataInputStream in=null;
String s;
ServerThread(Socket s)
socket=s;
try
out=new DataOutputStream(socket.getOutputStream());
in=new DataInputStream(socket.getInputStream());
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();


public void run()
while(true)
try
//这里是个死循环!!!终归是不科学的;
//你没有给出客户端的代码 所以也没办法知道具体应该怎么写;
double r=in.readDouble(); //就是这一行报的错
double area=Math.PI*r*r;
out.writeDouble(area);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();


本回答被提问者采纳
参考技术B 在执行读之前,应该先判断是否有数据可读吧?!

CI框架页面打开空白,无报错为解决方法新环境

1、打开错误显示,可以在控制controllers的首页入口加入以下代码,查看错误
error_reporting(-1);
ini_set(‘display_errors‘, 1);
//插入显示所有错误
2、将网站路径内的文件夹权限给到777

  

以上是关于java--socket编程,报错为 java.net.SocketInputStream.read(Unknown Source),怎么回事啊?的主要内容,如果未能解决你的问题,请参考以下文章

angularjs 遇见$scope,xxx=function()报错为该函数未定义

openharmony编译报错ubuntu20.04按照官方文档,hb set报错为OHOS ERROR] Invalid vendor path: /home/openharmony/vendor

解决非controller使用@Autowired注解注入报错为java.lang.NullPointerException问题

PostGIS 报错为org.postgresql.util.PSQLException:错误: Operation on mixed SRID geometries

Java Socket(断开不报错版)

java socket网络编程