十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你好:Socket s = new Socket("localhost", 6660);//14行
成都创新互联公司技术团队十多年来致力于为客户提供成都网站建设、做网站、成都品牌网站建设、营销型网站建设、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了成百上千网站,包括各类中小企业、企事单位、高校等机构单位。
这个的话,你的没通, 去黑窗口输入 tenlet 127.0.0.1 6660;看看是否有结果输出,再就是你别用localhost了,换成实际的127.0.0.1的地址,
你需要用一个list 管理 所有的客户端socket 。
Socket socket = ss.accept();
socketList.add(socket )
然后 再依次向么个socket 输出
for (Iterator iterator = socketList.iterator(); iterator.hasNext();) {
Socket object = (Socket) iterator.next();
OutputStream os = socket.getOutputStream();
DataOutputStream dis = new DataOutputStream(os);
dis.writeUTF( “message”);
}
代码如下:
package com.sxl.gd.test;
public class Array {
private int []a = {1,2,3,4,5,6};
private int x1,x2,x3,x4,x5,x6;
private void aver() {
int sum = 0;
for(int i=0;ia.length;i++) {
sum+=a[i];
}
System.out.println("平均数是:"+(double)sum/(double)a.length);
}
public Array() {}
public Array(int x1,int x2,int x3,int x4,int x5,int x6) {
a[0] = x1;
a[1] = x2;
a[2] = x3;
a[3] = x4;
a[4] = x5;
a[5] = x6;
}
private void min() {
int min = a[0];
for(int i=1;ia.length;i++) {
if(a[i]min) {
int temp;
temp = a[i];
a[i]=min;
min = temp;
}
}
System.out.println("最小值是:"+min);
}
private void max() {
int max = a[0];
for(int i=1;ia.length;i++) {
if(a[i]max) {
int temp;
temp = a[i];
a[i]=max;
max = temp;
}
}
System.out.println("最大值是:"+max);
}
public static void main(String[] args) {
Array array1 = new Array();
array1.aver();
array1.max();
array1.min();
Array array2 = new Array(6,2,8,4,1,7);
array2.aver();
array2.max();
array2.min();
}
}
运行结果如下:
第一题: 元素的复制
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
int[] scores = {91,85,98,62,78,93};
int[] newScores=Arrays.copyOfRange(scores, 0, 5);//复制元素, 左开右闭区间[0,5)
System.out.println(Arrays.toString(newScores));//调用数组工具类的方法转成字符串并打印
}
}
第二题: 这题虽然使用集合更方便 , 但却是非常好的一维数组的训练题目.
解法一: 集合解决 随机产生7个不重复的数字很简单
import java.util.HashSet;
import java.util.Random;
public class NumberTest {
public static void main(String[] args) {
HashSetInteger set= new HashSetInteger();//元素不可重复的无序集合
Random rd=new Random();//随机产生器
while(set.size()7) {
set.add(rd.nextInt(36)+1);//产生1~36的随机数
//如果元素重复, 那么添加不上去
}
System.out.println(set);
}
}
解法二:一维数组 ,解决产生7个数字, 并升序排列
int[] nums 数组存储1~36个数组
boolean[] flags 数组存储的是和nums数组一一对应的true或者false,如果使用了就标记为true.,如果没有使用标记为false,
例如 随机产生了一个下标0 ,那么查看flags[0] ,如果是true, 那么说明该元素已经使用了,重新产生一个随机数, 如果是false ,那么表示nums[0]没有被使用
具体代码如下(稍微留个尾巴, 就是中不中的判断, 可以把两个数组都升序排序,然后元素一一比较,全部相同就是中了)
import java.util.Arrays;
import java.util.Random;
public class NumberDemo {
public static void main(String[] args) {
int[] nums= new int[36];//长度为36的数组 ,默认全是0
for (int i = 0; i nums.length; i++) {//利用for循环赋值1~36
nums[i]=i+1;
}
boolean[] flags=new boolean[nums.length];//长度和nums相同的数组,默认值全是false ,表示全部没有使用过
//用boolean值表示对应的nums里的元素是否被使用
int[] result=new int[7];//存储结果
Random rd = new Random();
for (int i = 0; i result.length; i++) {
int temp=rd.nextInt(nums.length);//随机产生下标
//System.out.println(Arrays.toString(result));
if(flags[temp]) {//如果已经被使用,那么i-1,并在此循环
i--;
//System.out.println("号码"+nums[temp]+"已经存在.再次循环");
}else {
result[i]=nums[temp];
flags[temp]=true;//标记true表示已经使用了
}
}
System.out.println("原始排序:"+Arrays.toString(result));
Arrays.sort(result);//升序排列
System.out.println("升序排列:"+Arrays.toString(result));
}
}
Java程序代码:
public class test {
public static void main(String[] args) {
if(args.length != 2) {
System.out.println("参数数量错误!必须是2个参数,以空格隔开...");
return;
}
Rectangle rect = new Rectangle(Double.parseDouble(args[0]), Double.parseDouble(args[1]));
System.out.println(rect.getArea() + " " + rect.getPerimeter());
}
}
class Rectangle {
protected double height;
protected double width;
public Rectangle(double height, double width) {
this.height = height;
this.width = width;
}
public double getArea() {
return height * width;
}
public double getPerimeter() {
return 2 * (height + width);
}
}
运行测试:
我也才写了一个,我不想看代码
你可以把发送和接受信息都写在一个死循环里
客户端:1.发送 2.接受
服务端:1.接受 2.发送
这个接收我第一个代码用的BufferedRedaer br = new BufferedReader(new InputStreamReader(in))
br.readline();//这个是阻塞式的,不接受到消息它是不会往后执行的,更ServerSocket里的accept方法一样的
客户端发送了就会卡在接受那,而服务器这边就会收到,服务器就会执行回复的输入,回复输入后,客户端这边就能接收到,就这样循环
第一次写的时候用的是PrintWriter进行发送,用inputstream的read方法读出来会不对
printwriter的write方法就是写入缓存,要用到String的getbytes方法,注意要使用flush方法清空缓存
读取用的是BufferedReader