你用循环判断一下,判断是不是默认值,当是默认值就退出,用变量记录一下循环的次数,就代表
数据的长度,取的时候只取那么长的就行了,我上次找到了的,代码被我删了,我再找找默认值,好
像是/u.....
实际上是0,但是数据中有0的话就不行
import java.net.*;
import java.io.*;
class tcpchuanshu {
public static void main(String[] args) throws Exception {
Socket s=new Socket("127.0.0.1",9000);
OutputStream out=s.getOutputStream();
//向输出流中写入数据
out.write("你好,服务端".getBytes());
//获取输入流数据
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
s.close();
}
}
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
class Server
{
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(9000);
System.out.println("我是服务端,监听9000端口");
Socket s=ss.accept();
System.out.println("有客户端连接");
InputStream in=s.getInputStream();
int len=0;
byte[] buf=new byte[1024];
in.read(buf);
while(buf[len]!=0)
{
len++;
}
System.out.println(new String(buf,0,len));
OutputStream out=s.getOutputStream();
out.write("你也好".getBytes());
s.close();
}
}
Inputstream.read方法会返回一个int,代表实际收到的字节数,根据这个值来截取字节数组就可以了