Java 如何拆分服务器从客户端接收的整数数组
客户端传递一个数组,并在其中签名 我希望服务器将整数前后拆分为两列,但我不知道如何使用整数而不是字符串,也不知道如何使用ObjectInputstream强制转换它 服务器端:Java 如何拆分服务器从客户端接收的整数数组,java,arrays,Java,Arrays,客户端传递一个数组,并在其中签名 我希望服务器将整数前后拆分为两列,但我不知道如何使用整数而不是字符串,也不知道如何使用ObjectInputstream强制转换它 服务器端: package server; import java.io.*; import java.net.*; import java.util.*; public class Server { public static void main(String[] args) { try{
package server;
import java.io.*;
import java.net.*;
import java.util.*;
public class Server {
public static void main(String[] args) {
try{
ServerSocket srvr = new ServerSocket(6013);
Socket skt = srvr.accept();
System.out.print("Server has connected!\n");
ObjectInputStream in = new ObjectInputStream(skt.getInputStream());
int[] o = (int[])in.readObject();
System.out.println("Received this object on the server:
"+Arrays.toString(o) +",");
skt.close();
srvr.close();
} catch (Exception e) {
}
}
}
package client;
import java.io.*;
import java.net.*;
import java.util.*;
import array.*;
import java.util.Arrays;
public class Client {
public static void main(String[] args) throws IOException {
try {
Socket sock = new Socket("127.0.0.1", 6013);
int[] process;
process = new int[]{4,5&6,6,7};
// int[] arrival;
// arrival = new int[]{4,5,6,7};
// int[] burst;
// burst = new int[]{4,5,6,7};
ObjectOutputStream out = new
ObjectOutputStream(sock.getOutputStream());
out.writeObject(process);
}
catch(Exception e)
{}
}
}
客户端:
package server;
import java.io.*;
import java.net.*;
import java.util.*;
public class Server {
public static void main(String[] args) {
try{
ServerSocket srvr = new ServerSocket(6013);
Socket skt = srvr.accept();
System.out.print("Server has connected!\n");
ObjectInputStream in = new ObjectInputStream(skt.getInputStream());
int[] o = (int[])in.readObject();
System.out.println("Received this object on the server:
"+Arrays.toString(o) +",");
skt.close();
srvr.close();
} catch (Exception e) {
}
}
}
package client;
import java.io.*;
import java.net.*;
import java.util.*;
import array.*;
import java.util.Arrays;
public class Client {
public static void main(String[] args) throws IOException {
try {
Socket sock = new Socket("127.0.0.1", 6013);
int[] process;
process = new int[]{4,5&6,6,7};
// int[] arrival;
// arrival = new int[]{4,5,6,7};
// int[] burst;
// burst = new int[]{4,5,6,7};
ObjectOutputStream out = new
ObjectOutputStream(sock.getOutputStream());
out.writeObject(process);
}
catch(Exception e)
{}
}
}
由于你是新来的,我会尽量详细回答你 首先,数组是一个整数数组。您可能认为数组中的
&
符号是数组中的实际符号,但您错了。数组仅由整数组成
那么5和6会发生什么呢?
贾蒙已经说过5&6=4。这听起来很奇怪,但这是真的,因为符号是一种算术和逻辑运算。这一个取2个二进制数,和
每个位加在一起,如下表所示:
if 0 and 0 => 0
if 0 and 1 => 0
if 1 and 0 => 0
if 1 and 1 => 1
二进制中的5由0101表示
二进制中的6由0110表示
5和6的算术和为0100(二进制),等于十进制值中的4
要回答您的问题:如果要在到达服务器时拆分阵列,请选择不属于您正在寻址的集合的某个整数:例如,如果您知道整数始终小于10,请选择100:
int[] process;
process = new int[]{4, 5, 100, 6, 6, 7};
在服务器端,只要在给定“令牌100”的情况下拆分阵列即可
int [] a = { 4,5,100,6,6,4 };
int index = -1;
for (int i = 0; i < a.length; i++) {
if (a[i] == 100) {
index = i;
break;
}
}
int [] aBefore = new int[index];
int [] aAfter = new int[a.length-index-1];
System.arraycopy(a, 0, aBefore, 0, index);
System.arraycopy(a, index+1, aAfter, 0, a.length-index-1);
int[]a={4,5100,6,6,4};
int指数=-1;
for(int i=0;i
您能显示您的输入和预期输出吗?你有{4,5&6,6,7}
你需要用它做什么<代码>{4,5,6,6,7}?(int)(5&6)==0101&0110==4
,这将转换为4并作为4
而不是5&6