`
文章列表
 在Socket和ServerSocket通信的应用上,挑选了聊天来进行深入练习. 这是第一个版本,暂时实现了基本的登录,群聊,私聊,同步联系人列表等功能. 这里简化了很多功能,所有在线用户就是一个群,私聊还存在一点问题将在下版本修复.先 ...
一、连接首先,在服务器中创建ServerSocket对象ss,对象ss调用accept方法的时候,可以得到一个Socket对象.ServerSocket ss = new ServerSocket(613);// 不要使用80等其他程序常用端口,这里任选一个端口613Socket st = ss.accept();这是一个阻塞方法,如果accept不到一个客户端,他就一直会在这里等待客户端的连接,直到有一个客户端连上来才执行结束。如果需要连接多个客户端,可以写while循环来执行ss.accept();在客户端可以这样对其进行连接.Socket st = new Socket("12 ...
在用Socket和Serversocket通信的时候,自己序列化的对象使用对象流传输时遇到StreamCorruptedException异常。   有两个方面需要考虑: 一个是写出对象的时候有没有flush(); 一个是在线程中用while 循环了,new ObjectOutputStream和getOutputStream(in是一样的)是在while循环中进行的,每次都会创建,每次都会从Socket中去获得流。

你画我猜

    博客分类:
  • Java
根据之前的画图板加上网络改造一下成一个网络的。   画图板中,有许多形状,都是包装为对象的,例如,直线对象: public class Line extends Shape{ public Line(int x1,int y1,int x2,int y2,Color c){ this.x1 = x1; this.y1 = y1; this.x2 = x2; ...
目的:通过socket与socketserver的通信实现远程监控   首先,在serversocket(被监控端)一直截屏发送到socket。 再到socket(客户端)中不断接收截屏内容并展示出来。   代码如下: 服务器: public class RemoteServer { private static Socket st; public static void main(String[] args) { ServerSocket server; try { server = new ServerSocket(1234); s ...
class MoveListener extends MouseAdapter { int x0, y0, x1, y1; public void mousePressed(MouseEvent e) { x0 = e.getXOnScreen(); y0 = e.getYOnScreen(); } public void mouseDragged(MouseEvent e) { if (!isMax) {// 不是最大化的时候才可以移动 x1 = e.getXOnScreen(); y1 = e.getYOnScre ...
最近在做JFrame窗口的时候为了将边框弄得更加美观,所以需要去掉默认的边框.然后在窗体上加上最大最小化与关闭按钮.(代码中ChatUI为类名)   主要方法:setExtendedState();   第一步:去掉JAVA边框 this.setUndecorated(true);   第二步:增加JButton按钮.   closeT = new JButton(new ImageIcon( "images\\chat\\sysbtn_close_normal.png")); closeT.setBounds(64, 0, 26, 19) ...
  实现过程参见:http://479001499.iteye.com/admin/blogs/2091701 在这基础上多写了一个线程控制玩家飞机的被撞之后的2s无敌时间,解决了那2s中不能发子弹,背景不动的问题。 在音乐播放的时候用线程控制它循环播放。 改变了记分语句的位置,解决了最高分比得分小的问题。 在center上绘制文字,在文字区域加上鼠标监听器的反馈,点击就像是点击了按钮一样,选择新游戏,继续游戏之类的有相应的反应。 撞击判断改用矩形是否相交来判断(之前那样写坐标脑袋都转晕了,还是写矩形方便些,毕竟API提供了这个功能,实现思路其实是一样的)。 写了一个R ...
public byte[] int2byte(int data){ byte b4 = (byte)((data)>>24); byte b3 = (byte)(((data)<<8)>>24); byte b2= (byte)(((data)<<16)>>24); byte b1 = (byte)(((data)<<24)>>24); byte[] bytes = {b1,b2,b3,b4}; return bytes; } pub ...
先定义树的节点类 package Tree; /** * 树节点 * @author Huangbin * d2014年7月18日 */ public class Tree { Object obj;//内容 Tree parent;//父节点 Tree lchild;//左孩子节点 Tree rchild;//右孩子节点 public Tree(Object obj) { this.obj = obj; } ...
链表:单链表,双链表,循环链表   单链表:每个节点有一个内容和一个地址,这个地址指向下一个节点。 第一个加入链表的节点为头结点,它的地址指向第二个节点,第二个节点地址指向第三个节点。。。最后一个节点的地址指向null。 如图所示:     由这样的关系,我们容易得知只要知道first,我们就可以用first.next.next.....取到每一个节点元素。 对于单链表,我们要实现他的创建,添加,插入,删除,查询(遍历)等方法。 下面的程序只实现了基本的创建与遍历。其余均在双链表会实现。方法类似。 Node.java package 单链表LinkedList的实现; ...

多线程之小球碰撞

    博客分类:
  • Java
思路: 窗体中加JPanel面板方便重绘(用线程对其每30s进行重绘) 子弹类ZiDan有move方法,bump方法,draw方法,分别用来移动子弹,判断是否和气泡相遇,绘制本身。 气泡类QiPao有move方法,bump方法,draw方法,分别用于移动气泡,判断是否和气泡相遇,绘制本身。 用两个ArrayList保存当前屏幕上的所有子弹和气泡,子弹移出去了就令其isLive属性为false,结束该子弹线程。   开始游戏的时候随机生成气泡。 效果如下:       

线程总结

    博客分类:
  • Java
一、程序,进程,线程的区别        程序是一段静态的代码,是软件执行的蓝本。        进程可以理解为正在进行的程序,它是从程序加载、执行、执行完毕的整个过程,多个进程可以共享操作系统所管理的资源,比如剪切板。每个进程都单独占用一块内存,多个进程之间不能数据共享,必须通过网络交换数据。        线程是比进程更小的执行单位,一个进程在执行过程中,可以产生多个线程。线程是一个进程内部的多个并行的运行单元,同一个进程的多个线程之间可以通过内存共享数据。通俗地讲,线程是运行在进程中的小“进程”。   二、Java中的多线程        Java程序执行时,先启动了一个主线 ...
一、要求:          创建玩家飞机,敌方飞机,均能发子弹,撞击后能移除相应对象。 二、思路:       类的定义以及具体需要实现的功能:      UI//窗体,控制玩家移动的鼠标监听器,刷新窗体的方法,Esc的键盘监听器,游戏的初始化,暂停等        UpdataCenter//刷新窗体的线程      MyPlane//玩家飞机,判断是否被敌人撞,被敌人子弹击中,控制背景移动        Bullet//玩家的子弹,控制自己移动,判断是否和敌方子弹相遇抵消        EnermyPlane//敌方飞机,父类,敌机移动以及出界的相应操作       ...
设计思路:(用多线程并且每次交换数据都暂停1ms实现动态效果,顺便深入理解一下各类排序的特点)        从各类选择中选择了7种排序,用动态效果展示排序过程。生成800个随机数(用图形描述的时候每个数占一个像素点)用ArrayList存储每个点的长度(此处用矩形来画线,方便以后宽度的更改),每种排序都用一个线程来执行,每次赋值(冒泡和2路太慢,所以做了适当修改)都暂停1ms,这样才能看清过程再写一个线程刷新JPanel的窗体。       每个排序再写一个计算排序时间的类(线程)。测试了1000个,10000个,100000个的时间。 程序效果展示如下:         由 ...
Global site tag (gtag.js) - Google Analytics