62,614
社区成员
发帖
与我相关
我的任务
分享
DataInputStream dis =new DataInputStream(client.getInputStream());
String[] result=xml.extLogin(dis);
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
if(UserList.userList.containsKey(result[0])){
if(((String)UserList.userList.get(result[0])).equals(result[1])){
dos.writeUTF("SUCCESS");
}else{
dos.writeUTF("密码错误!");
}
}else{
dos.writeUTF("用户名不存在!");
}
DataInputStream data = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
DataOutputStream toClient = new DataOutputStream(client.getOutputStream());
DataInputStream fromServer=new DataInputStream(client.getInputStream());
//toClient.writeUTF("login");
//toClient.flush();
/*
* 传输文件
* */
int bufferSize = 1024;
byte[] buf = new byte[bufferSize];
while(true){
int read=0;
if(data!=null){
read=data.read(buf);
}
if(read==-1)
break;
toClient.write(buf,0,read);
}
toClient.flush();
/*
* 如果使用下面注释掉的两句中的任何一句
* server端能够收到结束符
* 解析xml
*
* 但是这里会抛出socket关闭异常
* 同时服务器也报Socket is closed
* 导致无法接收服务器返回的数据
*/
//client.getOutputStream().close();
//client.shutdownOutput();
/*
* 因为接收响应这段代码的存在
* 不使用client.getOutputStream().close();
* 或者client.shutdownOutput();
* 导致服务器无法判断已经传输完毕
* 卡在xml.extLogin(dis);这句上
*/
String resp=fromServer.readUTF();
while(true){
int read=0;
if(data!=null){
read=data.read(buf);
}
if(read==-1){
byte[] buf2 = new byte[10];
for(int i=0;i<10;i++){
buf2[i]=★;
toClient.write(buf2,0,10);
}
break;
}
toClient.write(buf,0,read);
}
toClient.flush();
while(true){
int read=0;
if(data!=null){
read=data.read(buf);
}
if(read==-1){
byte[] buf2 = new byte[1025];
for(int i=0;i<1024;i++){
buf2[i]=buf[i];
buf2[i+1]=★;
}
break;
}
toClient.write(buf,0,read);
}
toClient.flush();