永发信息网

java中的socket通信,怎么发送一个byte[]数组?

答案:5  悬赏:60  手机版
解决时间 2021-01-28 23:38
我是新手,最近开始看JAVA,看的那些范例都是:
String msg;
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(msg);
就行了,但是老师好像说这是发送文本什么的,让我不要用PrintWriter,直接用outputstream来发送,于是我改成了:
byte[] b;
OutputStream out = socket.getOutputStream();
out.println(b);
可是这样子就显示说“println”有错误,具体是“The method println(byte[]) is undefined for the type OutputStream”
请问各位大神们,这是怎么回事?我写错了吗?应该改成什么样子?
最佳答案
socket发送的是流,所以必须将byte[]转换成流的形式,之后才可以发送的。创建socket后可以通过下面的方法实现发送:
PrintWriter pw = null;
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()))); //创建一个输入流,之后这个流的指向是socket
pw.write(request.toString()); //写入要输入的Byte[],转换为字符串,之后进行传送
pw.close();//传送完毕,关闭流
全部回答
java.lang.String byte[] getBytes() Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array. byte[] getBytes(Charset charset) Encodes this String into a sequence of bytes using the given charset, storing the result into a new byte array. void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) Deprecated. This method does not properly convert characters into bytes. As of JDK 1.1, the preferred way to do this is via the getBytes() method, which uses the platform's default charset. byte[] getBytes(String charsetName) Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array. java.io.OutputStream void write(byte[] b) Writes b.length bytes from the specified byte array to this output stream. void write(byte[] b, int off, int len) Writes len bytes from the specified byte array starting at offset off to this output stream. LZ 应该学会看API。
out.write(b); out.flush(); 这样 就把你要发送的数据发出去鸟
数据传输就两种,byte字节流,char字符流。字符流包含字节流和一个解码的过程,就是把这一个或者两个字节按照编码原则解码成相应字符(a,b,c之类的字符),显然数据传输不一定就只传输字符,可能是音乐图片或者其他什么数据,所以就用byte字节流就行了,这个跟其他的没关系,也不用纠结这里。 高位和地位的意思啊。比如十进制的389,3就是最高位,9就是最低位,因为3在这是百位代表的是300,8是十位,9是个位;换成byte的二进制一样理解就行比如1011 0101这样一个二进制数,左边的就是高位,右边的就是低位。如果是竖着从上往下写,那就是上面的是高位,下边的是低位。如果倒过来写就倒过来看。道理一样。
OutputStream 没有println(byte[])方法的,使用下面的方法写入 write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流 另外建议你多看看java的API,这样的问题是直接可以从API上查到的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
地理课外活动.是学生获得地理知识的重要途径
单选题面对目前日益激烈的就业形势,青年学生
低铭文,孙悟空,赵云怎么出装,开局怎么办,
当a是正数,(即a>0)时,a的绝对值等于( )
众叛亲离的意思是什么啊?知道的请说下!
08年最流行的手机铃声是什么
我笑我可笑,傻到离不开你,傻到没了以前的洒
睡觉的时候可以佩戴石榴石吗
oracle中如何在一个表中某列插入的数据自动增
男人是天,男人是雨
侏儒症和巨人症是下列哪种激素在幼年时分泌异
凋萎的意思是什么啊?知道的请说下!
坤上艮下
宁波南站至宁海的滴滴打车,大概多少钱
如果要再现河姆渡居民的原始农耕生活,下列情
推荐资讯
我家的雪纳瑞被别的狗咬了
怎样收看凤凰卫视
金在中说和4个女艺人交往过 是什么时间 都是
肉驴吃什么草
重庆天气什么时候开始热
菌字开头的四字成语
以银行存款150元支付购买工商银行现金支票款
芭.曲美发地址在哪,我要去那里办事
经销商如何提供样品及资料?
工程亏损,分包老板发不起工资,工人去工地要
诨骗的意思是什么啊?知道的请说下!
我男朋友感觉有点不行 不能让我满足,我们马
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?