http://wenwen.soso.com/z/q181805845.htm

zhuhf_blog 2010-02-26 09:58:27
做的一个简单程序,发现一个怪异的现象!!!程序描述如下:

j2me端发送账号与密码,servelt负责接收处理,若果账号密码相同则返回登陆成功消息,否则登陆失败,j2me端消息接收

j2me端:public void run() {
//String url="http://localhost:8080/HttpServer/ServerServlet?acc="+account+"&pass="+password+"";
String url="http://localhost:8080/HttpServer/ServerServlet";
try{
hc=(HttpConnection)Connector.open(url);
hc.setRequestMethod(HttpConnection.POST);
dos=hc.openDataOutputStream();
dos.writeUTF(account);
dos.writeUTF(password);
dos.flush();
dos.close();

dis=hc.openDataInputStream();
//方法一
/*byte[] bytes=new byte[(int)hc.getLength()];
dis.read(bytes);
String str=new String(bytes,"UTF-8");*/


//方法二

String str=dis.readUTF();
if(str!=null)
lf.append(str);
dis.close();

}
catch(Exception ex){
ex.printStackTrace();
}
}


servlet端: response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
DataInputStream dis=new DataInputStream(request.getInputStream());

String acc=dis.readUTF();
String pass=dis.readUTF();
if(acc.equals(pass)){
out.print("登陆成功");
}
else{
out.print("登陆失败");
}
}
catch(Exception ex){
ex.printStackTrace();
}
finally {
out.close();
}


问题是这样:若果采用方法一,消息接收没有问题的,只是服务端抛出java.io.EOFException异常,客户端没有异常,消息接收正确!!
但如果采用方法二,客户端与服务端都有java.io.EOFException异常,而且收不到任何信息!!!!

请问这个是什么情况啊!!!!!!!

...全文
1440 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
(1) 远程端:安装VS2005光盘"\vs\Remote Debugger\x86\rdbgsetup.exe"。或者直接运行或copy本地端的: "Program Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\x86" (2) 远程端:“本地安全策略 - 安全选项 - 网络访问:本地帐户的共享和安全模式”改为:经典-本地用户以自己的身份验证。 (3) 远程端:启动Remote Debuger,从“工具 - 选项”中将身份验证模式改为“无身份验证,允许任何用户进行调试”。 或者直接用命令行:"\ msvsmon.exe" /noauth /anyuser /nosecuritywarn,可以建个快捷方式以方便运行。 (4) 将需要调试的程序debug版本和相应的pdb文件(包含调试信息)拷贝到远程主机,启动该debug版本程序。 (5) 本地:在VS2005中,“工具”--“附加到进程”,传输选“远程”,限定符输入远程端的主机名或IP地址,回车,选择我们需要调试的应用程序。如果一切正常,那么我们现在可以像调试本机程序一样调试远程主机上运行的debug版本了。 细节和常见问题: (1)如果是64位系统,请选择x64,即\vs\Remote Debugger\x64\rdbgsetup.exe; (2)不要因为远程主机是64位的,就使用64位的remote debugger,它必须和你的应用程序匹配,即统一为32位,或64位。 (3)如果是家庭版,控制面板管理工具里是没有“本地安装策略”这个工具的,那么只能通过修改注册表来实现,注册表项:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa], 找到“forceguest”,如果它的值为1,即dword:00000001,表示“仅来宾 - 对本地用户进行身份验证,其身份为来宾”(这个描述win7和之前的系统稍有不同),如果值为0,即dword:00000000,表示“经典 - 对本地用户进行身份验证,不改变其本来身份”。我们需要的值为0。 (4)win7/vista下远程连接到目标主机,已经成功显示了进程列表,但是attach待调试程序时候本地出现提示“Unable to attach the process - 系统找不到指定的文件 ”,这是因为remote debugger权限不足导致,以管理员权限重新启动remote debugger解决该问题。 (5)成功attach到远程主机目标程序,但是本地无法下断点,或者断点下了之后处于不可被触发状态。解决办法:rebuild整个工程,然后将重新编译的程序和pdb文件覆盖远程主机相应文件(这个和本地调试完全一样是不:P)。 (6)debug版本的程序拷到远程主机之后,无法运行,那好因为缺少相应的debug版本动态库和相关版本配置文件(可以用VS附带工具Depends查看)。以MFC程序为例,需要如下操作: 1)将VS目录下Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86下的三个目录相应的动态库拷贝到远程主机应用程序根目录下或者c:\windows\system32\目录下。 2)在c:\windows\winsxs\目录下找到编译主机vs2005版本匹配的目录:Microsoft.VC80.DebugCRT、Microsoft.VC80.DebugMFC,将他们拷贝到目标主机c:\windows\winsxs目录下。在将本地winsxs\Manifests\目录下的几个相应文件拷贝到目标主机这个目录下。最后将本机winsxs\Policies\目录下的相应子文件拷贝到相同目录下。这个链接说的更加的详细:http://wenwen.soso.com/z/q165079372.htm 注意:win7/vsita下winsxs是没有权限往里面写东西的,所以要更改权限,这个可以网上搜索,我就不详述了。 现在已经可以正常运行debug版本的程序了,即便该主机没有开发环境:)。

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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