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
不负相思意
TA贡献1777条经验 获得超10个赞
server=new ServerSocket(6666);
这句话报错了后,没有正确创建出server对象,server为空,而你下面 you=server.accept();肯定会报错了,报的是空指针异常。
- 3 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消