为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦大家帮我看下,下面这个程序只执行上面那一句,下面都执行不出来?为什么?

麻烦大家帮我看下,下面这个程序只执行上面那一句,下面都执行不出来?为什么?

大话西游666 2022-04-21 15:11:23
import java.io.*;import java.net.*;import java.sql.*;import java.util.StringTokenizer;public class DatabaseServer{public static void main(String args[]){ServerSocket server=null;Server_thread thread;Socket you=null;while(true){try{server=new ServerSocket(6666);}catch(IOException e1){System.out.println("正在监听");}try{you=server.accept();}catch (IOException e){}if(you!=null){new Server_thread(you).start();}else {continue;}}}}public class Server_thread extends Thread{Socket socket;Connection con=null;Statement stmt=null;ResultSet rs;DataOutputStream out=null;DataInputStream in=null;String s=null;int number=0;Server_thread(Socket t){socket=t;try {in=new DataInputStream(socket.getInputStream());out=new DataOutputStream(socket.getOutputStream());}catch (IOException e){}try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){}try{con=DriverManager.getConnection("jdbc:odbc:moon","","");stmt=con.createStatement();}catch(SQLException ee) {}}
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

主要原因是:serverSocket是服务器端执行对象,socket是客户端执行对象,应该是客户端建立一个socket对象,传入一个端口,然后服务器端监听这个端口,而你的程序有点乱。所以应该调整程序:
客户端:
//获取一个IP, null表示本机
InetAddress addr = InetAddress.getByName(null);
//打开8888端口,与服务器建立连接
Socket sk = new Socket (addr, 8888);
服务器端:
int port = 8888;
//使用8888端口创建一个ServerSocket
ServerSocket mySocket = new ServerSocket(port);
//等待监听是否有客户端连接
Socket sk = mySocket.accept();
当然,其他地方的代码还是要调整,另外,楼上说楼主写了死循环,其实并不是死循环,这个while结束条件是continue

查看完整回答
反对 回复 2022-04-24
?
不负相思意

TA贡献1777条经验 获得超10个赞

server=new ServerSocket(6666);
这句话报错了后,没有正确创建出server对象,server为空,而你下面 you=server.accept();肯定会报错了,报的是空指针异常。

查看完整回答
反对 回复 2022-04-24
?
呼唤远方

TA贡献1856条经验 获得超11个赞

你写的死循环while(true)肯定会一直执行啊

查看完整回答
反对 回复 2022-04-24
  • 3 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信