问题描述
socket程序,cs在同一个机器上可以正常传递数据,但cs分别在两个机器上就多出了一些数据这是什么原因。列入程序如下;ClientApp.javaimportjava.net.*;importjava.io.*;importjava.lang.*;publicclassClientApp{publicstaticvoidmain(Stringargs[]){try{//创建通讯并且和主机Rock连接SocketcSocket=newSocket("127.0.0.1",8000);//打开这个Socket的输入/输出流OutputStreamos=cSocket.getOutputStream();DataInputStreamis=newDataInputStream(cSocket.getInputStream());intc;booleanflag=true;Stringresponseline;while(flag){//从标准输入输出接受字符并且写如系统while((c=System.in.read())!=-1){os.write((byte)c);if(c=='e'){os.flush();//将程序阻塞,直到回答信息被收到后将他们在标准输出上显示出来responseline=is.readLine();System.out.println("Messageis:"+responseline);}}}os.close();is.close();cSocket.close();}catch(Exceptione){System.out.println("Exception:"+e.getMessage());}}}服务器程序ServerApp.javaimportjava.net.*;importjava.io.*;publicclassServerApp{publicstaticvoidmain(Stringargs[]){try{booleanflag=true;SocketclientSocket=null;StringinputLine;intc;ServerSocketsSocket=newServerSocket(8000);System.out.println("Serverlistenon:"+sSocket.getLocalPort());while(flag){clientSocket=sSocket.accept();DataInputStreamis=newDataInputStream(newBufferedInputStream(clientSocket.getInputStream()));OutputStreamos=clientSocket.getOutputStream();while((inputLine=is.readLine())!=null){//当客户端输入stop的时候服务器程序运行终止!if(inputLine.equals("stop")){flag=false;break;}else{System.out.println(inputLine);while((c=System.in.read())!=-1){os.write((byte)c);if(c=='e'){os.flush();//将信息发送到客户端break;}}}}is.close();os.close();clientSocket.close();}sSocket.close();}catch(Exceptione){System.out.println("Exception:"+e.getMessage());}}}分别在莲台机器上运行,(也改了ClientApp的ip)就会多出一些东西来。
解决方案
解决方案二:
多出了啥?这你也让我们猜吗?Socket不会因机器不同而不同。
解决方案三:
不应该,socket没有本机和多机差异。
解决方案四:
没什么特别不同的地方
解决方案五:
两台不同的机器的操作系统是一样的吗?如果是的话,那你就吧代码贴出来给大家看看。如果两台机器操作系统不一样,这样的情况我倒是碰到过:Symbian上的j2me程序和AIX上的C++程序通讯时,当时是用iconv解决的。
解决方案六:
xixi:)boy,plsnoticeyourIP
解决方案七:
同样都是windowsxp,多出来一些字符窜例如:“aagg。。。”