一个很普通的问题,关于C/S的一个socket,编译可通过,就是连不上,麻烦各位看一下,急!!!

arpoul 2002-11-08 06:25:07
基本思想是这样的,点击客户端的一个按钮可以通过服务器端连接数据库进行查询,并将结果显示在客户端的界面上。有一个双向的过程,客户端要发送数据(一个类),也要接收数据,服务器端也要接收数据处理好后再发回客户端。代码可以运行,但查询时服务器端抛出异常,说error by Connectjava.lang.ClassNotFoundException: hrclient.HREmployeeInfo

客户端:

//要查询的流
public class HREmployeeInfo extends Object implements java.io.Serializable
{
int employeeCode;
String employeeName;
String employeeAge;
String employeeSex;
String employeeAddress;

}


void queryButton_actionPerformed(ActionEvent e) {

HREmployeeInfo data = new HREmployeeInfo();
HREmployeeInfo data1 = new HREmployeeInfo();
data.employeeCode =Integer.parseInt(EmployeeCodeTextField.getText());

try
{
Socket toServer;
toServer = new Socket("localhost", 6666);
ObjectOutputStream streamToServer = new ObjectOutputStream(toServer.getOutputStream());
streamToServer.writeObject(data);

ObjectInputStream streamFromServer = new ObjectInputStream(toServer.getInputStream());
data1 =(HREmployeeInfo)streamFromServer.readObject();
EmployeeNameTextField.setText(data1.employeeName);
EmployeeAgeTextField.setText(data1.employeeAge);
EmployeeSexTextField.setText(data1.employeeSex);
EmployeeAddressTextField.setText(data1.employeeAddress);
streamFromServer.close();
streamToServer.close();

}
catch(Exception ea)
{
System.out.println("error by query" + ea);
}
}

服务器端:
……
try{
server = new ServerSocket(6666);
serverThread = new Thread(this);
serverThread.start();
}
catch(Exception e)
{
System.out.println("Cannot start the thread" + e);
}
……
public void run()
{
try
{
while(true)
{
fromClient = server.accept();
Connect con = new Connect(fromClient);
}
}
catch(Exception ex5)
{
System.out.println("Cannot listen to the Client" + ex5);
}
}

……

public class Connect
{
HREmployeeInfo data;
ObjectInputStream streamFromClient;
ObjectOutputStream streamToClient;

public Connect(Socket inFromClient)
{
try
{
streamFromClient = new ObjectInputStream(inFromClient.getInputStream());
data = (HREmployeeInfo)streamFromClient.readObject();

HREmployeeInfo data1 = new HREmployeeInfo();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cn = DriverManager.getConnection("jdbc:odbc:data", "sa", "");
PreparedStatement stat = cn.prepareStatement("Select * from EmployeeInformation where employeeCode=?");
stat.setInt(1,data.employeeCode);
ResultSet result = stat.executeQuery();
result.next();
data1.employeeName = result.getString(2);
data1.employeeAge = result.getString(3);
data1.employeeSex = result.getString(4);
data1.employeeAddress = result.getString(6);

streamToClient =(ObjectOutputStream)inFromClient.getOutputStream();
streamToClient.writeObject(data1);

cn.close();
streamFromClient.close();
streamToClient.close();

}
catch(Exception ex6)
{
System.out.println("error by Connect" + ex6);
}
}
}

...全文
24 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fastmask 2002-11-08
  • 打赏
  • 举报
回复
import HRClient.*;是对的吗?你的包名jb缺省的是小写的,所以我认为是你的包名写错了。应该写成import 包名.*;
arpoul 2002-11-08
  • 打赏
  • 举报
回复
导进去了,还是不对
arpoul 2002-11-08
  • 打赏
  • 举报
回复
你可别走呀!
arpoul 2002-11-08
  • 打赏
  • 举报
回复
我是建了两个工程,HRServer和HRClient,现在想在HRServer的类中导入HRClient的类,import HRClient.*;导不进来,jb7说找不到,痛苦……,再帮我想想办法,一定多多给分!!!:)
qljsd 2002-11-08
  • 打赏
  • 举报
回复
搞定了吗?
我要回家家了。
qljsd 2002-11-08
  • 打赏
  • 举报
回复
example:
import yourPackageName.*;或 import yourPackageName.HREmployeeInfo;

sorry 差一个分号
qljsd 2002-11-08
  • 打赏
  • 举报
回复
你的client server是指的客户端和服务器端吗?

若是的话,你把包含HREmployeeInfo的包导入就可以了呀
example:
import yourPackageName.*;或 import yourPackageName.HREmployeeInfo
arpoul 2002-11-08
  • 打赏
  • 举报
回复
就是这句话出错,client和server不在一个package里,我怎么才能导入client里的一个类呢?
qljsd 2002-11-08
  • 打赏
  • 举报
回复
是不是这句代码出错:data = (HREmployeeInfo)streamFromClient.readObject();

若是的话,你检查一下HREmployeeInfo类是不是在同一个包里,或有没有导入
qljsd 2002-11-08
  • 打赏
  • 举报
回复
你调试一下,错误是在哪儿发生的。

我觉得应该是

找不到类:HREmployeeInfo

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧