请教襄阳太守郭靖一个Socket的“见龙在田”的心法.

Find_My_Ideal 2014-05-02 09:52:30
我写了一个Socket程序,现在遇到了下面的错误:
服务器向C端写回数据,代码如下:
  
package s_port_package;

import java.io.File;
import java.io.FileNotFoundException;
import java.net.Socket;

public class ManageTheNo19Thread extends Thread {
SocketClient so2 = null;
String MySearchObj = null;
Socket so = null;
String Chatlog = "";
String Mynum = null;
String MyObjRole = null;
int MyObjnum = 0;
String Myrole = null;
String MyUserFriRole = "";
String MyUserServerPlace = "";
String MyOrderNum = "";
int[] confirmdata = new int[35];
int[] myorderInfo = new int[18];
String MyUserObjRole = "";
String MyUserObjNum = "";
String MyObjIP = "";
/**
*
*/
private static final long serialVersionUID = 1L;

public ManageTheNo19Thread(String MyData,String IP) {
String[] buffer = MyData.split("丠");
MyObjRole = buffer[0];
MyObjnum = Integer.parseInt(buffer[1]);
MyOrderNum = buffer[2];
MyUserServerPlace = buffer[3];
MyObjIP = IP;
}
public void run(){
//TODO:添加“分析第34行”的MyOrderNum的“每一位含义”的代码逻辑:“地理位置”,“用户信息”等数据.
char[] ch = MyOrderNum.toCharArray();
System.out.println("2014425line 35");
if(myCodeisRight(ch)&&ismySysCode(MyOrderNum)){
String myFilePath = getFilePath(MyOrderNum);
System.out.println("online 95"+myFilePath);
try{
ReadTxt.read(myFilePath);
}catch(Exception e){

}
int len = ReadTxt.logData.size();
System.out.println("online98------->"+len);
Chatlog = Chatlog + ReadTxt.logData.get(0);
for(int i = 0;i<len;i++){
Chatlog = Chatlog +"\n"+ ReadTxt.logData.get(i);
System.out.println(Chatlog);
}
int n_num = counter(Chatlog, "\n");
int word_num = Chatlog.length();
int line_num = word_num/44+1;
int mainline_num = line_num+n_num;
int page_num = mainline_num/43+1;
Chatlog = page_num+"丮"+Chatlog;
so2 = new SocketClient(MyObjIP,5555);
String str0 = "9丗9丗"+Chatlog+"丗D";
so2.writeStr(str0,"ManageTheMemberReadChatlog");
System.out.println("2014425"+str0);
so2.getMyResourceBack();
}else{
so2 = new SocketClient(MyObjIP,5555);
String str1 = "9丗9丗"+"请检查您的输入收据,并且重新输入,您的输入的收据不符合我们系统的算法,请您重新尝试."+"丗D";
so2.writeStr(str1, "ManageTheMemberReadChatlog");
so2.getMyResourceBack();
}
}

public static void main(String[] args){
ManageTheNo19Thread m1 = new ManageTheNo19Thread("Mem丠0丠20系统平台诚信担保码Boq”AAAAN曌140528CCHLBAHM丠BeiJing","127.0.0.1");
m1.start();
}

public boolean myCodeisRight(char[] ch){
int codelen = ch.length;
for(int i = 0;i<codelen;i++){
confirmdata[i]=(int)ch[i];
}
System.out.println("1"+String.valueOf(confirmdata[codelen-1]==confirmdata[codelen-2]+5));
System.out.println("2"+String.valueOf(confirmdata[codelen-3]+7==confirmdata[codelen-2]));
System.out.println("3"+String.valueOf(confirmdata[codelen-5]-10==confirmdata[codelen-4]));
System.out.println("4"+String.valueOf(76==confirmdata[codelen-5]));
System.out.println("5"+String.valueOf((confirmdata[codelen-6]-confirmdata[codelen-7])<=5));
System.out.println("6"+String.valueOf(confirmdata[codelen-8]==67));
if((confirmdata[codelen-1]==confirmdata[codelen-2]+5)&&(confirmdata[codelen-3]+7==confirmdata[codelen-2])&&(confirmdata[codelen-5]-10==confirmdata[codelen-4])&&(76==confirmdata[codelen-5])&&((confirmdata[codelen-6]-confirmdata[codelen-7])<=5)&&(confirmdata[codelen-8]==67)){
return true;
}else{
return false;
}
}



public boolean ismySysCode(String str){
int preoffset = str.indexOf("码");
int lastoffset = str.indexOf("曌");
String mycodedata = str.substring(lastoffset+1,lastoffset+7);
int myconfirmnum = str.charAt(str.length()-16);
int mydatamainnum = 0;
for(int i=2;i<6;i++){
mydatamainnum = mydatamainnum+Integer.parseInt(String.valueOf(mycodedata.charAt(i)));
}
if(mydatamainnum+64 == myconfirmnum){
return true;
}else{
return false;
}
}

// public String getMySendInfo(String str){
//
// }

public String getMyUserInfo(String str){
String MyUserOrderInfo = "";
for(int i =0;i<str.length();i++){
System.out.println("OurCoreElement----------->"+DRecv.OurCoreElement.get(""+str.charAt(i)));
MyUserOrderInfo = MyUserOrderInfo + DRecv.OurCoreElement.get(""+str.charAt(i));
}
return MyUserOrderInfo;
}

public String getFilePath(String MyOrderNum){
char[] myorderRole0Numch = new char[4];
char[] myorderRole1Numch = new char[4];
char[] myorderDataInfo = new char[6];
int beginindex = MyOrderNum.indexOf("码");
int endindex = MyOrderNum.indexOf("曌");
MyOrderNum = MyOrderNum.substring(beginindex+1,endindex);
String MyUserOrderInfo = getMyUserInfo(MyOrderNum);
System.out.println(MyUserOrderInfo);
char[] OrderNumchar = MyUserOrderInfo.toCharArray();
int[] myorderInfo = new int[18];
for(int i =0;i<4;i++){
myorderRole0Numch[i]=OrderNumchar[i+8];
myorderRole1Numch[i]=OrderNumchar[i+11];
}
System.out.println("line_on176");
for(int i =1;i<7;i++){
myorderDataInfo[i-1]=OrderNumchar[i];
System.out.println("----------------------------->>>>>"+i);
}
for(int i = 0;i<18;i++){
myorderInfo[i]=OrderNumchar[i];
}
myorderInfo[7]=Integer.parseInt(String.valueOf(OrderNumchar[7]));
String MyOrderRole0Num = new String(myorderRole0Numch);
String MyOrderRole1Num = new String(myorderRole1Numch);
String MyOrderRoleDataInfo = new String(myorderDataInfo);
String MyFilename =getMyFilename(myorderInfo[7],MyOrderRole0Num,MyOrderRole1Num);
String MyServerPlace = judgeMyOrderUserPlace(myorderInfo[7],myorderInfo);
String chatlogPath = "D:"+File.separator+"MyDoc\\MyDoc"+File.separator+MyServerPlace+File.separator+MyOrderRoleDataInfo+File.separator+nowisday(myorderInfo[0])+File.separator;
System.out.println(chatlogPath+MyFilename);
return chatlogPath + MyFilename;
}

public static String nowisday(int MytimeId){
if(MytimeId==1){
return "Day";
}else{
return "Night";
}
}

public String judgeMyOrderUserPlace(int Localrelationpara,int[] para){
if(Localrelationpara==0){
return GetCityIndex.getMyIndexCity(para[para.length-1]);
}else if(Localrelationpara==1){
return GetCityIndex.getMyIndexCity(para[para.length-2]);
}else if(Localrelationpara==2){
return GetCityIndex.getMyIndexCity(para[para.length-1]);
}else{
return "CheckUp";
}
}



public String getMyDirectory(int relation){
if(relation == 0){
return "D:"+File.separator+"MyDoc"+File.separator+"MyMemFaceUserChatlog"+File.separator+"MyChatObjis"+"Mem"+File.separator;
}else if(relation == 1){
return "D:"+File.separator+"MyDoc"+File.separator+"MyMemFaceUserChatlog"+File.separator+"MyChatObjis"+"Mem"+File.separator;
}else{
return "D:"+File.separator+"MyDoc"+File.separator+"MyMemFaceUserChatlog"+File.separator+"MyChatObjis"+"Cus"+File.separator;
}
}

public String getMyFilename(int relation,String MyOrderUserNum,String MyOrderUserObjNum){
if(relation == 0){
return "MyMemNumis"+MyOrderUserNum+".txt";
}else if(relation == 1){
return "MyMemNumis"+MyOrderUserNum+".txt";
}else{
return "MyMemNumis"+MyOrderUserNum+".txt";
}
}


//MyRole为功能申请方的用户角色.MyObjRole为功能申请方的聊天好友.
public int judgerelationship(String MyRole,String MyObjRole){
if(MyRole.equals("Mem")&&MyObjRole.equals("Mem")){
return 0;
}else if(MyRole.equals("Mem")&&MyObjRole.equals("Cus")){
return 1;
}else{
return 2;
}
}

public int counter(String s,String c){
int count=0;
for(int i=0;i<s.length();i++){
if(String.valueOf(s.charAt(i)).equals(c)){
count++;
}
}
return count;
}

public static String nowisday(String isDay){
if(isDay.equals("1")){
return "Day";
}else{
return "Nigth";
}
}
}


C端我进行debug的时候,现场如下:

小弟看到,小弟贴出的“写出数据”的服务端的源代码,第63行,写出的数据在服务器打印出来为:

但是在小弟的C端,得到的接收数据却为:
9丗9丗1丮我是楚留香.
求民族英雄郭靖,为志愿新兵讲授一下“《降龙十八掌》”,“见龙在田”,的心法.
新兵蛋子在线等!!
...全文
1171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
振振君子 2014-05-05
  • 打赏
  • 举报
回复
好招式 蛤蟆上树破解
朗晴 2014-05-04
  • 打赏
  • 举报
回复
高手出招,看不懂啊
末日哥 2014-05-04
  • 打赏
  • 举报
回复
看来你已经自己参透“见龙在田”的心法
Iamstruggle 2014-05-04
  • 打赏
  • 举报
回复
问题已解!! 是由于我的SocketServer的代码里,在进行读取数据的时候,有一个return readLine();方法进行了读取到的数据的回复. 现在我采用了: 发送数据的时候进行“将\n替换掉”,在接收方接收到后,“再替换回来”的办法进行了我的开发需求的满足. 谢谢-Space兄弟的沙发. 分数,我都给你了.
-Space 2014-05-03
  • 打赏
  • 举报
回复
沙发。。没人回答吗?这问题比较奇怪

62,621

社区成员

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

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