java网络通信如何使用字节类传送字节数据

各位大侠,你们好!小弟是一名学生,为了完成老师的一个作业,刚学java网络通信,是这样的,我想实现由java客户端控制台读入一串字符(包括中文),然后将这串字符存储在字节... 各位大侠,你们好!小弟是一名学生,为了完成老师的一个作业,刚学java网络通信,是这样的,
我想实现由java客户端控制台读入一串字符(包括中文),然后将这串字符存储在字节数组里面,并发到java服务器端,java服务器端接收到字节数组数据后转化为字符串后打印在服务器端输出设备上。通信问题基本能实现了,现在是怎样用java里面的哪些字节类来完成这个过程,如能快点解决,万分感谢!
各位大侠就不要谦虚了,帮帮小弟吧,万分感谢
展开
 我来答
raodehui919924
2012-04-05 · 超过16用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:34.7万
展开全部
这是我写的,看看对你有没帮助:

服务器端:
package com.test.tcp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Map;

import org.nutz.json.Json;

import com.test.card.CardInterface;
import com.test.card.TaideImplement;

public class ServerCode {

/**
* @param args服务器端接收请求代码
*/
/**
* 设置一个与客户端通讯的公共端口
*/
public static int portNo=8888;
private String jsonString="";//用于给本地的客户端传递执行结果信息,以便将此信息返回给vclient服务器端

public static void main(String[] args)throws IOException {

ServerSocket s=new ServerSocket(portNo);
System.out.println("启动公共端口对应的服务通讯:++++++——————sfdgdf : "+s);//在服务器本地控制台打印信息
/**
* 阻塞,直到有客户端连接
*/
Socket socket=s.accept();
System.out.println("接收到客户请求+++++++++++++=== "+socket);//在服务器本地控制台打印信息
/**
* 设置IO句柄
*/
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//得到客户端发送来的信息流

PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//服务器端发送给客户端的信息流
out.write("收到信息");
out.flush();//刷新清除缓存

System.out.println("关闭流");
socket.close();
s.close();

}
public String getJsonString() {
return jsonString;
}
public void setJsonString(String jsonString) {
this.jsonString = jsonString;
}
}

客户端:

package com.test.tcp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class ClientCode {

/**
* @param args 客户端发送请求的代码
*/

/**
*定义 需要传送给服务器端的信息
*/
static String clientName="Charlie";
/**
* 设置一个与服务器端通讯的公共端口号
*/
public static int portNo=8888;

public static void main(String[] args) throws IOException{
/**
* 设置连接地址类,连接本地
*/
InetAddress address=(InetAddress) InetAddress.getByName("localhost");//此处的address为对应服务器端的ip地址
/**
*要对应服务器端的8888端口号
*/
Socket socket=new Socket(address,portNo);
ServerCode serverCode=new ServerCode();
clientName=serverCode.getJsonString();//得到card刷卡服务器端扣款实现返回的信息,并(此客户端针对)将返回的信息传回给vclient的服务器端
try {
System.out.println("++++—————— ::: "+socket);
/**
* 设置IO句柄
*/
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.write(clientName);
out.flush();
out.println("1111111111111111111111—— "+clientName);//out.println() ---是将信息写到流中,然后在服务器端打印出来
String string=in.readLine();//就收客户端返回的信息流
System.out.println(string);
out.println("88");//out.println() ---是将信息写到流中,然后在服务器端打印出来
} catch (Exception e) {
e.printStackTrace();
}
finally{
System.out.println("--++++++++------");//在本地客户端控制台上输出信息
socket.close();
}
}

}
1058106015
2012-04-04 · TA获得超过268个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:124万
展开全部
/**
*
* 概述:读取文件保存到byte数组中
*/
public static byte[] fileTobyte(String file) {
if (file == null || "".equals(file)) {
return null;
}
File f = new File(file);
if (!f.isFile()) {
return null;
}
ByteArrayOutputStream baos = null;
try {
baos = new ByteArrayOutputStream();
FileInputStream in = new FileInputStream(file);
int c;
byte buffer[] = new byte[1024];
while ((c = in.read(buffer)) != -1) {
for (int i = 0; i < c; i++)
baos.write(buffer[i]);
}
in.close();
baos.close();
} catch (Exception e) {
log.error(e);
throw new RuntimeException();
}
byte[] buf = baos.toByteArray();
return buf;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
似灵杉0Ey
2015-07-23 · TA获得超过313个赞
知道小有建树答主
回答量:341
采纳率:55%
帮助的人:145万
展开全部
服务器端
DataInputStream inData;
socket = serverSocket.accept();
inData = new DataInputStream(socket.getInputStream());
outData = new DataOutputStream(socket.getOutputStream());
byte[] b = ("hello world").getBytes();
outData.write(b,0,b.lenth);
客户端是
out = new DataOutputStream(socket.getOutputStream());
in = new DataInputStream(socket.getInputStream());
byte[] b ;
ByteArrayOutputStream out1 = new ByteArrayOutputStream();
while (in.available() != 0) {
out1.write(in.read());
}
b = out1.toByteArray();
return new String(b);

转换的时候有问题
out = new DataOutputStream(socket.getOutputStream());
in = new DataInputStream(socket.getInputStream());
byte[] b = new byte[in.available()];
for(int i = 0;i < b.length;i++){
b[i] = (byte)in.read();
}

String s = new String(b);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2012-04-03 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3496万
展开全部
head first java 上网络编程那张有个列子..你去看看就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式