高手,小弟写程序遇到了下面的报错场景:
       package youHeart;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;public class SocketServer {
private ServerSocket ss = null;
private Map<Socket, BufferedReader> rm = new HashMap<Socket, BufferedReader>();
private Map<Socket, PrintWriter> wm = new HashMap<Socket, PrintWriter>();
String MyKey = "CJCO5888CJCO";
BufferedReader br = null;
PrintWriter pw = null;private Socket s;
private InputStream in;
private OutputStream out;
private BufferedInputStream inByte;
private OutputStream outByte;
private BufferedReader inStr;
private PrintWriter outStr;
public String MyObjIP = "";
private long size = 0; public SocketServer(int port) {
try {
ss = new ServerSocket(port);
} catch (IOException e) {

}
}

public void setSocket(Socket so){
s = so;
try {
out = s.getOutputStream();
in = s.getInputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} inByte = new BufferedInputStream(in);
outByte = out; inStr = new BufferedReader(new InputStreamReader(in)); outStr = new PrintWriter(new OutputStreamWriter(out));
} public Socket nextSocket() {
Socket s = null;
try {
s = ss.accept();
} catch (Exception e) {

} return s;
} public String read(Socket s) throws IOException {
if (null == (br = rm.get(s))) {
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
rm.put(s, br);
}
String str = br.readLine();
str = Systemcrypt.Recovery(str,"CJCO");
return str;
} public void write(Socket s, String content) throws IOException {
if (null == (pw = wm.get(s))) {
pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
wm.put(s, pw);
}
content = Systemcrypt.HloveyRC4(content, "CJCO");
pw.println(content);
pw.flush();
} public void getMyResourceBack() {
if (pw != null) {
pw.close();
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block

}
}
if (rm != null) {
rm.clear();
}
if (wm != null) {
wm.clear();
}
if (ss != null) {
try {
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block

}
}
}
}
       package youHeart;import java.io.File;public class YouHeart {
static String MyDportIP = "localhost";
static String MyTargetSportNum = "a1";
static String MyBelovedCenterNum = "a1";
static String myprojectversion = "1";
static String myUserNum = "a1";
static String my_Yport_Server_IP = "127.0.0.1";
static String MyMemIDPath = "D:" + File.separator + "MyDoc" + File.separator
+ "Sport" + File.separator + "registeredMemUID.txt";
static String MyMemPWDPath = "D:" + File.separator + "MyDoc" + File.separator
+ "Sport" + File.separator + "registeredMemPWD.txt";
static HashMap<String,Socket> socketlib = new HashMap<String,Socket>();//记录用户系统编号及其水管。
static HashMap<String,SocketClient> hmso = new HashMap<String,SocketClient>();
int todaymyuserNum = 0;
static SocketClient soo = null;
String MyYportUID = "D:\\MyDoc\\Yport\\YportUID.txt";
String MyYportPWD = "D:\\MyDoc\\Yport\\YportPWD.txt";
String MyNportCenter = "localhost";
String MyObjNum = "";
String MySysCenter = "N";
String MyUserInfo = "";
int myfuct = 0;
static HashMap<String,String> p2pmap = new HashMap<String,String>();
static SocketServer so = null;
static HashMap<String,Socket> lib = new HashMap<String,Socket>();//记录系统编号和其水管。

public YouHeart(String str){
try {
ReadTxt.read(MyYportUID);
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
for(int i =0;i<ReadTxt.logData.size();i++){
ChatServer.bufMemUID.add(ReadTxt.logData.get(i));
System.out.println("*************************"+ChatServer.bufMemUID.get(i));
}

ReadTxt.logData.clear();
try {
ReadTxt.read(MyYportPWD);
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
for(int i =0;i<ReadTxt.logData.size();i++){
ChatServer.bufMemPWD.add(ReadTxt.logData.get(i));
}
ReadTxt.logData.clear();
System.out.println("soo的值为"+soo);
System.out.println("\r\n");
so = new SocketServer(10018);
int r = 0;
try{
while(true){
Socket s = so.nextSocket();
so.setSocket(s);
try {
str = so.read(s);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Just close Line81,Watch next change");
// soo = new SocketClient(my_Yport_Server_IP,10018);
System.out.println("How come Line83 throws nullpointException");
System.out.println("系统接收到的当前最关心数据为"+str);
socketlib.put("N",s);
String[] str0 = str.split("龖");
for(int i= 0;i<str0.length;i++){
System.out.println(i+"           号索引的值为=============          "+str0[i]);
}
System.out.println("系统所接收的数据为"+str);
String myfuct;
String MyUserNum;
String MyObjNum;
String MyUserRole;
String MyObjRole;
str0[1]="2881";
if(str0[1].equals("2881")){
// System.out.println("MyInfo-----|||||当前系统"+str0[3]+"端"+str0[1]+"用户发送的消息,系统最关心数据||||----"+str+"工作线程名为"+str0[6]);
myfuct = str0[0];
MyUserNum = str0[1];
MyObjNum = str0[2];
if(str0[3].equals("C")){
System.out.println("抓住");
}
MyUserRole = str0[3]; 
MyObjRole = str0[4];
if(r==0){
ChatServer myThread = new ChatServer(MyObjNum,MyUserRole);
Thread thread = new Thread(myThread);
thread.start();
r++;
}
Thread.sleep(2000);
// String myThreadname = str0[6];
}else{
myfuct = str0[0];
MyUserNum = str0[1];
MyObjNum = str0[2];
if(str0[3].equals("C")){
System.out.println("抓住");
}
MyUserRole = str0[3]; 
MyObjRole = str0[4];
String myThreadname = str0[6];
}
//【注意:】下面代码至【收尾】处,为重要重中之重代码。
if(MyUserRole.equals("C")){
socketlib.put("C"+MyUserNum, s);
}else if(MyUserRole.equals("S")){
socketlib.put("S"+MyUserNum,s);
}else if(MyUserRole.equals("D")){
socketlib.put("D"+MyUserNum,s);
}else if(MyUserRole.equals("Y")){
socketlib.put("Y"+MyUserNum, s);
}else{
socketlib.put("N"+MyUserNum, s);
}
//【收尾】
MyUserInfo = str0[5];
Test5 cjco = new Test5();//cjco记录用户“IP地址”及其“Socket水管”。
String IP = "";
cjco.put(IP,s);
socketlib.put(MyUserRole+MyUserNum, s);
switch(Integer.parseInt(myfuct)){
case 3: {// 已对照完毕.
//第一步:负责系统用户登陆面向SPort的“获取系统编号”的作业的“用户登录init中转站分支”.
socketlib.put(MyUserRole+String.valueOf(MyUserNum),s);
YouHeart.soo.ServerThread(YouHeart.socketlib.get(MyUserRole+MyUserNum)); if(!MyUserNum.equals("2881"))
break;
//【165行重要位置,修改为163与164行的精神】
break;
}
case 0://第二步:面向Sport面向每一位用户的登录进行的“回写系统编号”的init系统用户端的中转站分支.
{
// ManageTheChannel0ConfirmandSaveDS obj0 = new ManageTheChannel0ConfirmandSaveDS(String.valueOf(MyUserNum),
//  MyUserInfo, MyObjNum,so,s);
// obj0.start();
// break;
}



case 1://面向每一位系统用户进行的“数据传输”功能分支.
// {
// socketlib.put(MyUserRole+MyUserNum,s);
// try {
// System.out.println("socketlib的Sa1键的值为"+socketlib.get("Sa1"));
// System.out.println("socketlib的Da1键的值为"+socketlib.get("Da1"));
// System.out.println("socketlib的Na1键的值为"+socketlib.get("Na1"));
// System.out.println("\r\n");
System.out.println("MyObjRole+MyObjNum的值为:"+MyObjRole+MyObjNum);
System.out.println("MyUserInfo的值为:"+MyUserInfo);
so.write(socketlib.get(MyObjRole+MyObjNum), MyUserInfo);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// break;
// }
case 2://面向每一个系统端点进行init的中转站分支.(包括数据中心,和子加盟服务器).
{
// socketlib.put(MyUserRole+MyUserNum, s);
//// socketlib.put(MyUserNum,s);
// break;
}

case 28:
{
//        soo = new SocketClient(MyDportIP,10018);
//        hmso.put(MyUserRole+MyUserNum, soo);
//        break;
}
// }
}}}catch(Exception e){
e.printStackTrace();
}
}

public static void main(String[] args){
try{
new YouHeart("0龖0龖0龖加油");
}catch(Exception e){
e.printStackTrace();
}
}

// public void SendInfo(String MyUserRole,String MyUserNum,String MyObjRole,String todaymyuserNum,String myUserInfo,Socket s){
// p2pmap.put(String.valueOf(Integer.parseInt(todaymyuserNum)+1),MyUserRole+MyUserNum);
// socketlib.put(MyUserRole+MyUserNum,s);
// try {
// soo.write(socketlib.get(MyObjRole+MyObjNum), MyUserInfo);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
}        上述为“服务器端点”。
       package Test091;import java.io.IOException;public class ServerP { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
SocketClientS soooo = new SocketClientS("127.0.0.1",10018);
soooo.writeStr2("3", "a1", "ServerP", "0", "HELLO_I_AM_TOM");
String str = "";
while(true){
try {
str = soooo.readStr();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("+++++++++++++++++++++++++当前ServerP端点最关心数据"+str);
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
// soooo.writeStr2("1", "a1", "ServerP", "0", "HELLO_I_AM_TOM");
}
}
}         上述为“客户端”端点。
         小弟运行上述两个类型的时候,首先运行了“服务器端点”,之后运行了“客户端端点”;
         报出如下的故障:
         
          高手,由于篇幅原因。下文请您见后面的补贴。
          在此,感谢高手的过目!!

解决方案 »

  1.   

    高手,上文中的代码,还有三个辅助类需要交待一下:
            package youHeart;
    public class SocketServer {
    private ServerSocket ss = null;
    private Map<Socket, BufferedReader> rm = new HashMap<Socket, BufferedReader>();
    private Map<Socket, PrintWriter> wm = new HashMap<Socket, PrintWriter>();
    String MyKey = "CJCO5888CJCO";
    BufferedReader br = null;
    PrintWriter pw = null;private Socket s;
    private InputStream in;
    private OutputStream out;
    private BufferedInputStream inByte;
    private OutputStream outByte;
    private BufferedReader inStr;
    private PrintWriter outStr;
    public String MyObjIP = "";
    private long size = 0; public SocketServer(int port) {
    try {
    ss = new ServerSocket(port);
    } catch (IOException e) {

    }
    }

    public void setSocket(Socket so){
    s = so;
    try {
    out = s.getOutputStream();
    in = s.getInputStream();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } inByte = new BufferedInputStream(in);
    outByte = out; inStr = new BufferedReader(new InputStreamReader(in)); outStr = new PrintWriter(new OutputStreamWriter(out));
    } public Socket nextSocket() {
    Socket s = null;
    try {
    s = ss.accept();
    } catch (Exception e) {

    } return s;
    } public String read(Socket s) throws IOException {
    if (null == (br = rm.get(s))) {
    br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    rm.put(s, br);
    }
    String str = br.readLine();
    str = Systemcrypt.Recovery(str,"CJCO");
    return str;
    } public void write(Socket s, String content) throws IOException {
    if (null == (pw = wm.get(s))) {
    pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
    wm.put(s, pw);
    }
    content = Systemcrypt.HloveyRC4(content, "CJCO");
    pw.println(content);
    pw.flush();
    } public void getMyResourceBack() {
    if (pw != null) {
    pw.close();
    }
    if (br != null) {
    try {
    br.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block

    }
    }
    if (rm != null) {
    rm.clear();
    }
    if (wm != null) {
    wm.clear();
    }
    if (ss != null) {
    try {
    ss.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block

    }
    }
    }
    }
            上文为“SocketServer”这个“封装后的ServerSocket的API”的源代码。
            package Test091;
    /**
     * 剪切板工具类
     * 
     * @author NeverChange
     * 
     */public class SocketClientS { public Socket getS() {
    return s;
    } public void setS(Socket s) {
    this.s = s;
    } static Socket s;
    private InputStream in;
    private OutputStream out;
    private BufferedInputStream inByte;
    private OutputStream outByte;
    private BufferedReader inStr;
    private PrintWriter outStr;
    public String MyObjIP = "";
    private long size = 0;private ServerSocket ss = null;
    private Map<Socket, BufferedReader> rm = new HashMap<Socket, BufferedReader>();
    private Map<Socket, PrintWriter> wm = new HashMap<Socket, PrintWriter>();
    String MyKey = "CJCO5888CJCO";
    BufferedReader br = null;
    PrintWriter pw = null; public SocketClientS(String ip, int port) {
    try {
    s = new Socket(ip, port);
    if(port == 9911)//只要连接端口是9911的,我就在这停下,然后看代码的堆栈,就知道哪地方哥哥,堆栈怎么看,您能告诉弟吗?
    {
    //System.out.println("开始连接9911端口了,请注意");
    }
    in = s.getInputStream();
    out = s.getOutputStream();
    MyObjIP = ip;
    inByte = new BufferedInputStream(in);
    outByte = out; inStr = new BufferedReader(new InputStreamReader(in)); outStr = new PrintWriter(new OutputStreamWriter(out));
    } catch (Exception e) {
    }
                                                                  } public String readStr() throws IOException {
    if (null == (br = rm.get(s))) {
    br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    rm.put(s, br);
    }
    String str0 = br.readLine();
    str0 = Systemcrypt.Recovery(str0,"CJCO");
    synchronized (this.in) {
    String str = this.inStr.readLine();
    return str;
    }
    } public File readToFile(File file) throws IOException {
    synchronized (this.in) {
    FileOutputStream fos = new FileOutputStream(file);
    byte[] temp = new byte[1024 * 8];
    int count = 0;
    while (-1 != (count = this.inByte.read(temp))) {
    fos.write(temp, 0, count);
    fos.flush();
    }
    fos.close();
    return file;//跑接收端的TestSendInfo与发送端的Client.
    }
    } public void writeFile(File file) {
    synchronized (this.out) {
    size = file.length();
    this.noticeFileSize(size); FileInputStream fis;
    try {
    fis = new FileInputStream(file);
    byte[] temp = new byte[1024 * 8];
    int count = 0;
    while (-1 != (count = fis.read(temp))) {
    this.outByte.write(temp, 0, count);
    this.outByte.flush();
    }
    fis.close();
    } catch (Exception e) {
    }
    }
    } private void noticeFileSize(long l) {
    String str = l + "";
    int j = 19 - str.length();
    for (int i = 0; i < j; i++) {
    str = "0" + str;
    }
    this.writeByByte(str);
    } protected void writeByByte(String content) {
    synchronized (this.out) {
    try {
    this.out.write(content.getBytes());
    this.out.flush();
    } catch (IOException e) {

    }
    }
    } private long getServerReceiveSize() {
    synchronized (in) {
    byte[] b = new byte[19];
    try {
    this.in.read(b);
    } catch (IOException e) {

    } return Long.parseLong(new String(b));
    }
    } public String getProgress() {
    long l = this.getServerReceiveSize() / (size / 100);
    if (100 == l) {
    return null;
    }
    return l + " %";
    }

    public void getMyResourceBack() {
    if (s != null) {
    try {
    s.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block

    }
    }
    if (in != null) {
    try {
    in.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block

    }
    }
    if (out != null) {
    try {
    out.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block

    }
    }
    if (inStr != null) {
    try {
    inStr.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block

    }
    }
    if (outStr != null) {
    outStr.close();
    }
    }
    public void writeStr(String str, String myThreadname, int myfuct,
    Integer chatPartnerSerialMark) {
    // TODO Auto-generated method stub
    String myInfo = "str"+"丗"+myThreadname +"丗"+"1"+"丗"+chatPartnerSerialMark;

    }

    public void write(Socket s, String content) throws IOException {
    if (null == (pw = wm.get(s))) {
    pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
    wm.put(s, pw);
    }
    content = Systemcrypt.HloveyRC4(content, "CJCO");
    pw.println(content);
    pw.flush();
    } public void writeStr0(String myfuctnum,String myObjNum, String myThreadname) {
    // TODO Auto-generated method stub
    synchronized (this.out) {
    String IP = GetMyUserIP.getMyIP();
    String str = myfuctnum+"龖"+"a1"+"龖"+myObjNum+"龖"+"D"+"龖"+"Y"+"龖"+MyJButtonLogin.MyUID+"丗"+MyJButtonLogin.MyPWD+"丗"+"D"+"丗"+IP+"龖"+myThreadname;
    ServerThread(s);
    outStr.println(str);//因为println默认会在每行的后面加上/r/n,所以不需要再重复加了,避免不必要的影响
    outStr.flush();
    }
    }

    public void writeStr1(String myfuctnum,String myObjNum, String myThreadname,String mydportfuct,String mydportsubfuct,String mySocketData) {
    // TODO Auto-generated method stub
    synchronized (this.out) {
    String IP = GetMyUserIP.getMyIP();
    String content0 = "";
    myThreadname = "";
    String str = myfuctnum+"龖"+"a1"+"龖"+myObjNum+"龖"+"D"+"龖"+"D" +"龖"+mydportfuct+"丗"+mydportsubfuct+"丗"+"C"+"丗"+"a1"+"丗"+mySocketData+"丗"+"D"+"丗"+"BeiJing"+"丗"+IP+"丗"+myThreadname+"龖"+myThreadname;
    ServerThread(s);
    outStr.println(str);//因为println默认会在每行的后面加上/r/n,所以不需要再重复加了,避免不必要的影响
    outStr.flush();
    }
    }

    //用于完成Y向Sport写入数据,数据首先经过Yport,Yport经过判断,把数据写给Sport,代码如下。
    public void writeStr2(String myfuctnum,String myObjNum, String myThreadname,String mysportfuct,String mySocketData) {
    // TODO Auto-generated method stub
    // synchronized (this.out) {
    String IP = GetMyUserIP.getMyIP();
    myThreadname = "";
    String str = myfuctnum+"龖"+"a1"+"龖"+myObjNum+"龖"+"D"+"龖"+"S" +"龖"+mysportfuct+"丗"+mySocketData+"丗"+"D"+"丗"+"S"+"丗"+"a1"+"丗"+IP+"丗"+myThreadname+"丗"+1+"龖"+myThreadname;
    ServerThread(s);
    outStr.println(str);//因为println默认会在每行的后面加上/r/n,所以不需要再重复加了,避免不必要的影响
    outStr.flush();
    // }
    } public void writeStr3(String myfuctnum,String myObjNum,String mycportfuct,String mySocketData,String myThreadname){
    synchronized (this.out) {
    String IP = GetMyUserIP.getMyIP();
    InetAddress addr = null;
    try {
    addr = InetAddress.getLocalHost();
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    String ip=addr.getHostAddress().toString();
    String AP = "a1"+"龖"+myObjNum+"龖"+"Y"+"龖"+"C"+"龖";
    String CP = mycportfuct+"丗"+"9"+"丗"+mySocketData+"丗"+"Y"+"丗"+ip+"丗"+"SocketClient"+"龖"+myThreadname;
    String str = myfuctnum + "龖"  + AP +CP;
    ServerThread(s);
    //str.replaceAll("", replacement)
    synchronized(s){
    outStr.println(str);//因为println默认会在每行的后面加上/r/n,所以不需要再重复加了,避免不必要的影响
    }
    outStr.flush();
    }}

    //由节点向N节点写出数据,数据首先经过Y节点,之后进入目标节点N。
    public void writeStr4(String myfuctnum,String myObjNum, String myThreadname,String mydportfuct,String mydportsubfuct,String mySocketData) {
    // TODO Auto-generated method stub
    synchronized (this.out) {
    String IP = GetMyUserIP.getMyIP();
    myThreadname = "";
    ServerThread(s);
    String str = myfuctnum+"龖"+mySocketData+"龖"+DRecv0.myprojectversion+"龖"+DRecv0.MyDportNum+"龖"+"D" +"龖"+mydportfuct+"丠"+
    mydportsubfuct+"丠"+"Y"+"丠"+"a1"+"丠"+mySocketData+"丠"+""+"丠"+"小区D节点运营商所在营业地址"+"丠"+IP+"丠"+myThreadname+"龖"+myThreadname;
    outStr.println(str);//因为println默认会在每行的后面加上/r/n,所以不需要再重复加了,避免不必要的影响
    outStr.flush();
    }
    }

    public void ServerThread(Socket s){
    try {
    in = s.getInputStream();
    out = s.getOutputStream();
    inByte = new BufferedInputStream(in);
    outByte = out; inStr = new BufferedReader(new InputStreamReader(in)); outStr = new PrintWriter(new OutputStreamWriter(out));
    } catch (Exception e) {
    }
    }}
              (上文为“SocketClientS”这个“封装了Socket的API”的源代码)
      

  2.   


              package Test091;
    /**
     * 程序入口类:系统上帝之手端点.
     *
     * @author 楚留香 <如转载请保留作者和出处>
     * @q-zone http://user.qzone.qq.com/745083865/infocenter?ptsig=EDxu09--a8Psawk9ZTT5c-VHXcfcRnqVjwC3dCNjLXo_
     */
    public class Systemcrypt {
    static String str1 = "";

    public static String HloveyRC4(String aInput, String aKey) {//哥哥,这是加密方法
    if(1==1)return aInput;
    int len = aInput.length();
    char[] ch = aInput.toCharArray();
    for(int i =0;i<len;i++){
    ch[i]=(char)(ch[i]+10);
    }
    return new String(ch);
    // if(1==1)
    // return aInput;
    // int[] iS = new int[10240];
    // byte[] iK = new byte[1024];
    //
    // for (int i = 0; i < 256; i++)
    // iS[i] = i;
    //
    // int j = 1;
    //
    // for (short i = 0; i < 256; i++) {
    // iK[i] = (byte) aKey.charAt((i % aKey.length()));
    // }
    //
    // j = 0;
    //
    // for (int i = 0; i < 255; i++) {
    // j = (j + iS[i] + iK[i]) % 256;
    // int temp = iS[i];
    // iS[i] = iS[j];
    // iS[j] = temp;
    // }
    //
    // int i = 0;
    // j = 0;
    // char[] iInputChar = aInput.toCharArray();
    // char[] iOutputChar = new char[iInputChar.length];
    // for (short x = 0; x < iInputChar.length; x++) {
    // i = (i + 1) % 512;
    // j = (j + iS[i]) % 256;
    // int temp = iS[i];
    // iS[i] = iS[j];
    // iS[j] = temp;
    // int t = (iS[i] + (iS[j] % 256)) % 16;
    // int iY = iS[t];
    // char iCY = (char) iY;
    // iOutputChar[x] = (char) (iInputChar[x] ^ iCY);
    // }
    //
    // return new String(iOutputChar); }

    public static String Recovery(String aInput,String aKey){//这是解密方法
    if(1==1)
    return aInput;
    int len = aInput.length();
    char[] ch = aInput.toCharArray();
    for(int i =0;i<len;i++){
    ch[i]=(char)(ch[i]-10);
    }
    return new String(ch);
    }

    public static void main(String[] str){
    // str0 = HloveyRC4(str0,"CJCO");
    // //System.out.println(str0);
    // str1 = Recovery(str0,"CJCO");
    //System.out.println(str1);
    }

    }
              (上文为加密字符串的一个加密类型的源代码)
               package Test091;import java.net.Socket;
    import java.util.HashMap;
    import java.util.Map;class Test5{
     static Map<String, Socket> map = new  HashMap<String, Socket>();
     static Map<Socket, String> map0 = new HashMap<Socket, String>();
    public Test5(){
    }public void put(String IP, Socket socket) {
       map.put(IP, socket); 
       map0.put(socket, IP);
    }public static Socket get(String IP){
    return map.get(IP);
    }public String get0(Socket s){
    return map0.get(s);
    }
    }
              (上文为一个整合了两个存储了系统端点Socket水管的类型的源代码)
              高手,由于篇幅原因,弟的帖子,有几个类型没有加导包语句。希望高手,能够知悉。
              求高手支招:
              小弟的代码,错在哪里?如何修改?
      

  3.   

    NewMoons哥,小弟的这个代码场景,已经全部把源代码贴完整了。您如果要浏览的话,只要把所有的类型拷贝到本地,就可以获得‘’调试模式”的状态了。
    这个代码现场如果再精简的话,反而会耽误高手的过目时间。
    希望高手,NewMoons哥,能够帮衬!!
    谢谢NewMoons哥的到场!!
      

  4.   

    我拷贝源代码的时候不是报重复就是还有找不到的类比如:ReadTxt、GetMyUserIP、DRecv0、ChatServer等等,太多列不完了。你是不是从网上找的例子啊?一般来说,引起该异常的原因有两个:
    1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。
    2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。你的错误是客户端报的,那说明服务器端的socket不知什么原因断开了,检查下。