日期:2014-05-20  浏览次数:20799 次

这个应该怎么写?
public int Trans_to_Bank(String ip,int port,String sndbuf) {
Socket socket = new Socket(ip, port);
DataOutputStream out = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
out.write(sndbuf,0,sndbuf.length());
out.flush();
}


我想把SNDBUF发送到服务端,这个SNDBUF内容可能有中文.可out定义有错误.应该怎么写


------解决方案--------------------
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
------解决方案--------------------
DataOutputStream(OutputStream out) 
创建一个新的数据输出流,将数据写入指定基础输出流。 
方法摘要 
 void flush() 
清空此数据输出流。 
 int size() 
返回计数器 written 的当前值,即到目前为止写入此数据输出流的字节数。 
 void write(byte[] b, int off, int len) 
将指定字节数组中从偏移量 off 开始的 len 个字节写入基础输出流。 
 void write(int b) 
将指定字节(参数 b 的八个低位)写入基础输出流。 
 void writeBoolean(boolean v) 
将一个 boolean 值以 1-byte 值形式写入基础输出流。 
 void writeByte(int v) 
将一个 byte 值以 1-byte 值形式写出到基础输出流中。 
 void writeBytes(String s) 
将字符串按字节顺序写出到基础输出流中。 
 void writeChar(int v) 
将一个 char 值以 2-byte 值形式写入基础输出流中,先写入高字节。 
 void writeChars(String s) 
将字符串按字符顺序写入基础输出流。 
 void writeDouble(double v) 
使用 Double 类中的 doubleToLongBits 方法将 double 参数转换为一个 long 值,然后将该 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。 
 void writeFloat(float v) 
使用 Float 类中的 floatToIntBits 方法将 float 参数转换为一个 int 值,然后将该 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。 
 void writeInt(int v) 
将一个 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。 
 void writeLong(long v) 
将一个 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。 
 void writeShort(int v) 
将一个 short 值以 2-byte 值形式写入基础输出流中,先写入高字节。 
 void writeUTF(String str) 
以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。 

------解决方案--------------------
调整一下你的代码。

Java code
    Socket socket = new Socket(ip, port);
    DataOutputStream out = new DataOutputStream(socket.getOutputStream());
    byte[] bs = sndbuf.getBytes("GBK");
    out.write(bs, 0, bs.length);
    out.flush();