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

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) {}
}

大话西游666
浏览 196回答 3
3回答

慕虎7371278

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

不负相思意

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

呼唤远方

你写的死循环while(true)肯定会一直执行啊
打开App,查看更多内容
随时随地看视频慕课网APP