我是新手,最近开始看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”
请问各位大神们,这是怎么回事?我写错了吗?应该改成什么样子?
java中的socket通信,怎么发送一个byte[]数组?
答案:5 悬赏:60 手机版
解决时间 2021-01-28 23:38
- 提问者网友:凉末
- 2021-01-27 22:59
最佳答案
- 五星知识达人网友:罪歌
- 2021-01-27 23:07
socket发送的是流,所以必须将byte[]转换成流的形式,之后才可以发送的。创建socket后可以通过下面的方法实现发送:
PrintWriter pw = null;
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()))); //创建一个输入流,之后这个流的指向是socket
pw.write(request.toString()); //写入要输入的Byte[],转换为字符串,之后进行传送
pw.close();//传送完毕,关闭流
PrintWriter pw = null;
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()))); //创建一个输入流,之后这个流的指向是socket
pw.write(request.toString()); //写入要输入的Byte[],转换为字符串,之后进行传送
pw.close();//传送完毕,关闭流
全部回答
- 1楼网友:归鹤鸣
- 2021-01-28 00:07
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。
- 2楼网友:纵马山川剑自提
- 2021-01-28 00:00
out.write(b);
out.flush();
这样 就把你要发送的数据发出去鸟
- 3楼网友:等灯
- 2021-01-27 23:35
数据传输就两种,byte字节流,char字符流。字符流包含字节流和一个解码的过程,就是把这一个或者两个字节按照编码原则解码成相应字符(a,b,c之类的字符),显然数据传输不一定就只传输字符,可能是音乐图片或者其他什么数据,所以就用byte字节流就行了,这个跟其他的没关系,也不用纠结这里。
高位和地位的意思啊。比如十进制的389,3就是最高位,9就是最低位,因为3在这是百位代表的是300,8是十位,9是个位;换成byte的二进制一样理解就行比如1011 0101这样一个二进制数,左边的就是高位,右边的就是低位。如果是竖着从上往下写,那就是上面的是高位,下边的是低位。如果倒过来写就倒过来看。道理一样。
- 4楼网友:千夜
- 2021-01-27 23:26
OutputStream 没有println(byte[])方法的,使用下面的方法写入
write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流
另外建议你多看看java的API,这样的问题是直接可以从API上查到的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯