首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java socket接收数据的有关问题

2012-01-19 
求助java socket接收数据的问题我用如下代码:BufferedReadersocketReadernewBufferedReader(newInputStre

求助java socket接收数据的问题
我用如下代码:
BufferedReader   socketReader   =   new   BufferedReader(new   InputStreamReader(socket.getInputStream()));
String   recvMsg   =   socketReader.readLine();
发送的字符串是:“123456\nabcd”
用这种方法遇到 "\n "符号会认为是结束符,接收终止了,后续的字母“abcd”不会接收到,请问用什么办法能够一次性接收所有的字符?多谢了!

[解决办法]
import java.net.*;
import java.util.*;
import java.io.*;
import java.text.*;
import java.lang.*;
import com.conf.Dbaccess;
import com.conf.*;
import com.file.FileList;
import com.file.ReadXML;
class serverThread extends Thread {

Socket clientRequest;
//用户连接的通信套接字
BufferedReader input; //输入流
PrintWriter output; //输出流

public serverThread(Socket s)

{ //serverThread的构造器
this.clientRequest=s;

int port;
ServerSocket serverSkt;
Socket clientSkt;
BufferedReader fileInfo;
BufferedInputStream fileReader;
BufferedOutputStream fileWriter;
String fileName;
PrintStream printStream;
//接收receiveServer传来的套接字
InputStreamReader reader;
OutputStreamWriter writer;
try {

//接收客户机连接请求
printStream = new PrintStream(clientRequest.getOutputStream());

fileInfo = new BufferedReader(new InputStreamReader(clientRequest.getInputStream()));
fileName = fileInfo.readLine();
System.out.println( "与 " + clientRequest.getInetAddress() + "建立连接 ");
printStream.println( "yes ");
System.out.print( "\nOK! 正在接收文件 " + fileName);
String szfilename= " ";
if(fileName.indexOf( "/ ")> 0){
szfilename= fileName.substring(fileName.lastIndexOf( "/ ")+1,fileName.length());

fileReader = new BufferedInputStream(clientRequest.getInputStream());
fileWriter = new BufferedOutputStream(new FileOutputStream( "d:\\test\\ "+szfilename));
int readin;
while((readin = fileReader.read()) != -1) {
//System.out.print( ". ");
fileWriter.write(readin);
}
fileReader.close();
fileWriter.flush();
clientRequest.close();
System.out.println( "\n文件接收完毕! ");
}
}
catch(IOException e) {
System.out.println(e.toString());
}
}
}
}

[解决办法]
不要用readLine(),直接按字节读socket.inputStream();

热点排行