C# socket 接收的前两个字节是长度,如何转成int类型,获取整个接收内容的长度

问题描述:

图片说明

已解决。由于我这边使用winfrom开发的。直接把取到的字节长度单独拿出来,
放到一个新的byte数组里面。然后转成十六进制。
在转成10进制。得到字节长度。

//测试URL程序 客户端和服务器端在后面
public class TestURL {
public static void main(String[] args) throws IOException {
//构建一URL对象
URL url=new URL("file:///C:/test.out");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
//使用openStream得到一输入流并由此构造一个BufferedReader对象
String inputLine;
while ((inputLine = in.readLine()) != null)
//从输入流不断的读数据,直到读完为止
System.out.println(inputLine); //把读入的数据打印到屏幕上
in.close(); //关闭输入流
}
}
客户端程序
public class ClientDemo {
public static void main(String[] args) throws UnknownHostException, IOException {
//向本机的4700端口发出请求
Socket socket=new Socket("localhost",4700);
//由系统标准输入创建一个输入流,负责接收界面输入的数据
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由Socket对象得到一个输出流
//负责向服务器端发送数据
PrintWriter pw=new PrintWriter(socket.getOutputStream());
//由Socket得到一个对象的输入流
//负责接收服务器端返回的信息
BufferedReader brsocket=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readLine;
//从标准输入设备上接收传入的一个字符串
System.out.println("请您输入向服务器的数据");
readLine=br.readLine();
//如果页面传入bye,则结束循环
while(!readLine.equals("bye")){
/*向服务器发送接收到的字符串*/
pw.println(readLine);
pw.flush();
//在标准输出设备上输出刚才发送给服务器的数据
System.out.println("Client:"+readLine);
//输出从服务器端得到的数据
System.out.println("正在等待接收服务器端信息:");
System.out.println("Server:"+brsocket.readLine());
//从标准输入设备上接收传入的一个字符串
System.out.println("请您输入向服务器的数据");
readLine=br.readLine();
}
brsocket.close();
pw.close();
br.close();
socket.close();
}
}
服务端程序
public class ServerDemo {
public static void main(String[] args) throws IOException {
/*创建服务器监听的接口*/
ServerSocket server=new ServerSocket(4700);
//使用accept()阻塞等待客户请求,有客户
//请求到来则产生一个Socket对象,并继续执行
Socket socket=server.accept();
String line;
//由Socket对象得到一个输入流,负责从客户端接收数据
BufferedReader brin=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象得到一个输出流,负责向客户端发送数据
PrintWriter pw=new PrintWriter(socket.getOutputStream());
//创建一个标准输入设备的输入流
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
//在标准输出设备上输出从客户端得到的数据
System.out.println("正在等待客户端的数据......");
System.out.println("Client:"+brin.readLine());
System.out.println("请您输入要向客户端发送的信息:");
//从标准输入设备上得到字符串
line=in.readLine();
////如果该字符串为 "bye",则停止循环
while(!line.equals("bye")){
//向客户端输出信息
pw.println(line);
pw.flush();
//在标准输出设备上输出刚才Server读入的字符串
System.out.println("Server:"+line);
//输出刚才从客户端读入的数据
System.out.println("正在等待客户端的数据......");
System.out.println("Client"+brin.readLine());
System.out.println("请您输入要向客户端发送的信息:");
line=in.readLine();
}
brin.close();
in.close();
pw.close();
server.close();
socket.close();
}
}